2012-08-16 9 views
6

Mam WPF TextBox że jest związany z widoku-modelu własności liczb Distance przez Caliburn.Micro konwencji nazewnictwa. Chcę móc dostosować format ciągów znaków TextBox, zachowując jednocześnie konwencję powiązania skonfigurowaną przez zestaw Caliburn.Micro. Jak mam to zrobić?Dostosowywanie format string w konwencji Caliburn.Micro związany TextBox

Z mojego Widok Model:

public double Distance 
{ 
    get { return _distance; } 
    set 
    { 
     _distance = value; 
     NotifyOfPropertyChange(() => Distance); 
    } 
} 

Z mojego View:

<TextBox x:Name="Distance"/> 

Gdy Distance jest niezerowe, chcę, aby wyświetlić numer z ustalonym zestawem miejsca dziesiętne, a gdy Distance ma wartość zero, chcę, aby pole tekstowe było puste.

Korzystanie wyraźne wiązanie można powiązać właściwość TextBox.Text do Distance, a następnie mogę ustawić StringFormat jednocześnie:

<TextBox x:Name="Distance" Text="{Binding Distance, StringFormat=0.000;;#}"/> 

jednak wyraźnej Text wiążący będzie wtedy zwarcie Caliburn.Micro nazewnictwa konwencja wiążąca. Czy można dostosować format ciągu bez konieczności ustawiania ścieżki wiązania właściwości TextBox.Text, aby móc polegać wyłącznie na Caliburn.Micro w celu obsługi wiązania Distance-do-TextBox?

+2

Krótkie odpowiedzi to nie. Albo skorzystasz z powiązania generowanego przez Caliburn, albo musisz wypisać całe wyrażenie wiążące jak w twojej próbce. – nemesv

+2

Odległość nie musi być liczbą, jest to model tego, co chcesz widzieć w widoku. Nie należy więc przekształcać właściwości w Double, sprawić, by był to ciąg znaków w widoku. –

+0

Wada, która po prostu wiąże wszystko ręcznie - jedyną rzeczą, która staje się związana konwencją nazw, jest domyślny bind lub akcja. Jedno wiązanie nie jest zbyt okropne, by na to patrzeć? – Charleh

Odpowiedz

2

Nie ma możliwości, aby to, co chcesz zrobić. Najprostszym sposobem jest zapewnienie sobie. Drugi sposób polega na odsłonięciu właściwości ciągu w ViewModelu i sformatowaniu go w programie pobierającym.