Kann ich die Eigenschaften einer Bindung in einem DataTrigger ändern, ohne die Bindung selbst zu kennen?

8

Ich habe einen TextBox Stil, der eine Zahl formatiert, wenn die Box nicht fokussiert ist, aber die Zahl unformatiert bleibt, während sie bearbeitet wird.

Dies ist der Stil, den ich für TextBoxen mit mehreren Zahlen haben möchte, aber sie enthalten alle unterschiedliche Textbindungen. Der einzige Unterschied zwischen dem regulären Textsetter und dem Triggered Text-Setzer besteht darin, dass der ausgelöste eine StringFormat=N2 in der Bindung hat.

Gibt es eine Möglichkeit, wie ich diesen Stil generisch machen kann, zum Beispiel nur die Eigenschaft StringFormat der Bindung im DataTrigger zu ändern?

%Vor%     
Rachel 03.02.2012, 13:09
quelle

5 Antworten

2

Die einzige Option, die ich dort sehe, wäre, eine angefügte Eigenschaft für das StringFormat zu erstellen und eine multiBinding zu verwenden.

Nicht ganz, was Sie wollten, aber nahe genug, denke ich ...

Sie haben weitere Informationen zu dieser (Art von Duplikat) Frage zu S.O.:

Ändern der Parameter der Textbindung einer TextBox mithilfe eines Styles

    
David 09.02.2012, 13:59
quelle
2
  

Gibt es einen Weg, wie ich diesen Stil generisch machen kann, zum Beispiel nur ändern   die StringFormat-Eigenschaft der Bindung im DataTrigger?

Übernehmen Style und neues XAML würde dies werden:

%Vor%

Hier ist die Klasse ...

%Vor%

Beachten Sie, dass mein Test

war
  • das generische MainWindow
  • impl INotifyPropertyChanged
  • SomeValue INPC-Eigenschaft
  • DataContext = das
  • x: Name = Dies
Jake Berger 11.02.2012 06:13
quelle
2

Mein Versuch, dies zu lösen, endete mit einem benutzerdefinierten Steuerelement plus einer Mehrfachbindung, die beide oben vorgeschlagen wurden.

So konnte ich Markup wie folgt verwenden:

& lt; CustomTextBox Wert="{Binding Value"} Format="N2" / & gt;

Ich habe versucht, meinen Code zu posten, aber ich bekomme immer einen Fehler über "Code, der nicht richtig als Code formatiert ist".

    
Phil 11.02.2012 15:30
quelle
0

Ich frage mich, ob Sie vielleicht eine angefügte Eigenschaft in den Bearbeitungen haben könnten, um den formatierten Wert zu halten (nur gebunden an den echten Edit-Wert mit einem angewandten Stringformat), dann könnten Sie den Editierwert setzen zu dieser Eigenschaft.

Dies würde jedoch zu einer kreisförmigen Bindung führen, wenn die Bearbeitung keinen Fokus hat, weiß nicht, wie WPF in solchen Situationen reagiert.

    
GazTheDestroyer 03.02.2012 14:32
quelle
0

Leider ist dies (meines Wissens) nicht möglich. Eine mögliche Problemumgehung wäre das programmatische Erstellen eines solchen Stils im laufenden Betrieb, der in einem MarkupExtension eingekapselt werden könnte, das den Pfad als Konstruktorparameter verwendet.

    
H.B. 06.02.2012 15:27
quelle

Tags und Links