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

And*_*son 6 c# wpf binding mvvm caliburn.micro

我有一个通过Caliburn.Micro命名约定TextBox绑定到视图模型编号属性的WPF .我希望能够自定义字符串格式,同时保留Caliburn.Micro已设置的约定绑定.我该怎么办?DistanceTextBox

从我的视图模型:

public double Distance
{
    get { return _distance; }
    set
    {
        _distance = value;
        NotifyOfPropertyChange(() => Distance);
    }
}
Run Code Online (Sandbox Code Playgroud)

从我的观点来看:

<TextBox x:Name="Distance"/>
Run Code Online (Sandbox Code Playgroud)

Distance非零时,我想用固定的小数组显示数字,当Distance为零时,我希望文本框为空.

使用显式绑定我可以将TextBox.Text属性绑定到Distance,然后我可以StringFormat同时设置:

<TextBox x:Name="Distance" Text="{Binding Distance, StringFormat=0.000;;#}"/>
Run Code Online (Sandbox Code Playgroud)

但是,显式Text绑定会使Caliburn.Micro命名约定绑定短路.是否可以自定义字符串格式而无需同时设置TextBox.Text属性的绑定路径,这样我就可以完全依赖Caliburn.Micro来处理Distance-to- TextBoxbinding?

Eng*_*ock 4

没有任何可能的方法可以实现您想要做的事情。最简单的方法就是你自己提供。第二种方法是在 ViewModel 中公开字符串属性并在 getter 中对其进行预格式化。