2017-11-27 5 views
0

ein WPF-Textfeld ein, als ein Beispiel gegeben:WPF - Kann StringFormat an eine Eigenschaft gebunden werden?

<TextBox Text="{Binding Path=blahProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat=\{0:yyyy.MM.dd HH:mm:ss\}}"/> 

Könnte der String ich habe es stattdessen zu einer zugrunde liegenden Eigenschaft String gebunden werden? - d. h. könnte "yyyy.MM.dd HH: mm: ss" von einer Eigenschaft in der View (oder ViewModel) bereitgestellt werden, anstatt in der XAML fest codiert zu sein?

+1

Ich gehe davon aus „blahProperty“ ist ein Datetime, die Sie formatieren möchten. Das heißt, Sie könnten eine separate String-Eigenschaft in Ihrem Datenkontext erstellen, die die formatierte Zeichenfolge zurückgeben würde. –

+0

Ja, das wäre eine Option. Es würde jedoch eine Menge zusätzlicher Komplexität erzeugen (die formatierte Zeichenketteneigenschaft müßte jedes Mal blah aktualisieren, wenn sie in der Benutzeroberfläche geändert wird, wäre NotifyPropertyChanged komplexer.) – simonalexander2005

Antwort

2

Nein, ein {Binding} kann nicht auf der StringFormat Eigenschaft der Binding eingestellt werden, da StringFormat keine Abhängigkeitseigenschaft ist.

Sie können nur an eine DependencyProperty von DependencyObject binden, d. H. Die Zieleigenschaft einer Bindung muss eine Abhängigkeitseigenschaft sein. obwohl

Sie legen kann es auf den Wert der statischen Eigenschaft:

StringFormat={x:Static local:MainWindow.StaticProperty}} 
+0

Danke, das ist eine hilfreiche Alternative. – simonalexander2005

Verwandte Themen