Ich habe einen WPF TextBox
, die zu der Ziel-Modellnummer Eigenschaft Distance
durch Caliburn.Micro Namenskonventionen gebunden ist. Ich möchte in der Lage sein, das TextBox
Zeichenfolgenformat anzupassen, während die Konventionsbindung beibehalten wird, die Caliburn.Micro eingerichtet hat. Wie soll ich das machen?Customizing-String-Format in einer Caliburn.Micro Konvention gebunden TextBox
Aus meiner Ansicht Modell:
public double Distance
{
get { return _distance; }
set
{
_distance = value;
NotifyOfPropertyChange(() => Distance);
}
}
Aus meiner Ansicht:
<TextBox x:Name="Distance"/>
Wenn die Distance
nicht Null ist, möchte ich mit einem festen Satz die Nummer anzuzeigen von Dezimalzahlen, und wenn die Distance
Null ist, möchte ich das Textfeld leer sein.
explizite Verwendung Bindung Ich kann die TextBox.Text
Eigenschaft Distance
binden, und dann kann ich den StringFormat
gleichzeitig gesetzt:
<TextBox x:Name="Distance" Text="{Binding Distance, StringFormat=0.000;;#}"/>
jedoch die explizite Text
Bindung würde dann kurzschließen Caliburn.Micro Namensgebung Konventionsbindung. Ist es möglich, das Zeichenfolgenformat anzupassen, ohne gleichzeitig den Bindungspfad der Eigenschaft TextBox.Text
festzulegen, sodass ich mich ausschließlich auf Caliburn.Micro für die Verarbeitung der Distance
-zu-TextBox
Bindung verlassen kann?
Die kurzen Antworten sind nein. Entweder Sie verwenden die von Caliburn generierte Bindung oder Sie müssen den gesamten Bindungsausdruck wie in Ihrer Probe ausschreiben. – nemesv
Abstand muss keine Zahl sein, es ist ein Modell dessen, was in der Ansicht sein soll. Machen Sie die Eigenschaft daher nicht zu einem Double, sondern geben Sie den String in der Ansicht an. –
Failing, dass nur alles manuell binden - die einzige Sache, die durch Namenskonvention gebunden wird, ist die standardmäßige bindbare Stütze oder die Aktion. Eine Bindung ist nicht zu schrecklich anzusehen, oder? – Charleh