在Caliburn.Micro约定TextBox中自定义字符串格式

时间:2012-08-16 12:02:00

标签: c# wpf mvvm binding caliburn.micro

我有一个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绑定?

1 个答案:

答案 0 :(得分:2)

没有可能的方法来做你想做的事。最简单的方法是你自己提供。 第二种方法是在ViewModel中公开string属性并在getter中预格式化它。