【问题标题】:Customizing string format in a Caliburn.Micro convention bound TextBox在 Caliburn.Micro 约定绑定的 TextBox 中自定义字符串格式
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多