【发布时间】:2012-08-12 18:32:59
【问题描述】:
我有一个 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-to-@ 987654335@绑定?
【问题讨论】:
-
简短的回答是否定的。要么使用 Caliburn 生成的绑定,要么必须像示例中那样写出整个绑定表达式。
-
距离不必是一个数字,它是你想要在视图中的模型。所以不要将属性设为 Double,将其设为视图中所需的字符串。
-
无法手动绑定所有内容 - 唯一受名称约定绑定的是默认的可绑定道具或动作。一个绑定看起来不会太可怕吧?
标签: c# wpf mvvm binding caliburn.micro