C# 自定义Caliburn.Micro约定绑定文本框中的字符串格式

C# 自定义Caliburn.Micro约定绑定文本框中的字符串格式,c#,wpf,mvvm,binding,caliburn.micro,C#,Wpf,Mvvm,Binding,Caliburn.micro,我有一个WPFTextBox,它通过Caliburn.Micro命名约定绑定到视图型号属性Distance。我希望能够自定义文本框字符串格式,同时保留Caliburn.Micro设置的约定绑定。我该怎么做 从我的视图模型: 在我看来: 但是,显式的文本绑定会使Caliburn.Micro命名约定绑定短路。是否可以自定义字符串格式,而无需同时设置TextBox.Text属性的绑定路径,这样我就可以完全依靠Caliburn.Micro来处理到TextBox的绑定距离?没有可能的方法。最简单的方法是你

我有一个WPF
TextBox
,它通过Caliburn.Micro命名约定绑定到视图型号属性
Distance
。我希望能够自定义
文本框
字符串格式,同时保留Caliburn.Micro设置的约定绑定。我该怎么做

从我的视图模型:

在我看来:


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

没有可能的方法。最简单的方法是你自己提供。
第二种方法是在ViewModel中公开string属性,并在getter中对其进行预处理。

简短的回答是否定的。要么使用Caliburn生成的绑定,要么像在示例中一样写出整个绑定表达式。距离不必是数字,它是视图中所需内容的模型。因此,不要将属性设置为双精度属性,而是将其设置为视图中所需的字符串。如果无法做到这一点,只需手动绑定所有内容-根据名称约定绑定的唯一内容是默认的可绑定属性或操作。一个装订看起来并不可怕,是吗?
public double Distance
{
    get { return _distance; }
    set
    {
        _distance = value;
        NotifyOfPropertyChange(() => Distance);
    }
}
<TextBox x:Name="Distance"/>
<TextBox x:Name="Distance" Text="{Binding Distance, StringFormat=0.000;;#}"/>