自定义 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 来处理DistanceTextBox的绑定?

你想

做什么是不可能的。最简单的方法是你提供自己。第二种方法是在 ViewModel 中公开字符串属性,并在 getter 中对其进行预格式化。

最新更新