2012-08-16 31 views
6

我有一個WPF TextBox綁定到視圖模型號碼屬性DistanceCaliburn.Micro命名約定。我希望能夠自定義TextBox字符串格式,同時保留Caliburn.Micro已建立的約定綁定。我應該怎麼做?定製Caliburn.Micro約定字符串格式約定TextBox

從我視圖模型

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

從我查看

<TextBox x:Name="Distance"/> 

Distance是非零的,我想用一組固定的顯示數小數點,並且當Distance爲零時,我希望文本框爲空。

使用顯式結合我可以TextBox.Text屬性綁定到Distance,然後我可以同時設置StringFormat

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

然而,明確Text綁定然後會短路Caliburn.Micro命名約定約束。是否可以自定義字符串格式,而不必同時設置TextBox.Text屬性的綁定路徑,以便我可以完全依賴於Caliburn.Micro來處理DistanceTextBox的綁定?

+2

簡答案是否定的。要麼使用Caliburn生成的綁定,要麼必須寫出完整的綁定表達式,如同樣例中所示。 – nemesv 2012-08-16 22:59:59

+2

距離不一定是數字,它是您想要在視圖中呈現的模型。因此,不要將該屬性設置爲Double,使其成爲視圖中所需的字符串。 – 2012-08-22 02:59:47

+0

失敗,只是手動綁定一切 - 唯一受名稱約定約束的是默認的可綁定道具或操作。一個綁定是不是太可怕,看是不是? – Charleh 2013-05-03 18:02:40

回答

2

有沒有可能的方式,你想做什麼。最簡單的方法就是你自己提供。 第二種方法是暴露ViewModel中的字符串屬性並在getter中對其進行格式化。