我有一个 WPF TextBox
,它绑定到通过 Caliburn.Micro 命名约定Distance
的视图型号属性。我希望能够自定义TextBox
字符串格式,同时保留 Caliburn.Micro 设置的约定绑定。我应该怎么做?
从我的视图模型:
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 来处理Distance
到TextBox
的绑定?
做什么是不可能的。最简单的方法是你提供自己。第二种方法是在 ViewModel 中公开字符串属性,并在 getter 中对其进行预格式化。