2012-08-16 26 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中对其进行格式化。