2012-08-16 5 views
6

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?

+2

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

+2

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. –

+0

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

Antwort

2

Es gibt keine Möglichkeit, was Sie tun möchten. Der einfachste Weg ist, dass Sie sich selbst versorgen. Die zweite Möglichkeit besteht darin, die Zeichenfolgeneigenschaft im ViewModel verfügbar zu machen und sie im Getter vorformatieren.