场景
我似乎找不到使用IFormatProvider格式化WPF中绑定的方法。目前,我的数据源上有一个属性:
public int PersonNumber { get; set; }
此属性绑定到XAML中的标签:
<Label Content="{Binding Path=PersonNumber}" />
正如你所看到的,这是一个数字,但格式应该像0000.0000。目前,我们在旧的WinForms应用程序中使用了一个单独的IFormatProvider来处理这些事情。
问题
- 这样的格式在WPF中可能吗?
- 如果是,我们的首选方式是仍然使用IFormatProvider,是否可能
- 如果没有,什么是好的替代方案
提前感谢!
您正在寻找ContentStringFormat属性,该属性位于包括Label在内的所有ContentControl子体上。
<Label Content="{Binding PersonNumber}" ContentStringFormat="000" />
不过,我不确定WPF的格式化是否可以使用IFormatProvider。
为了完成,您只需在ViewModel中添加一个String属性即可在C#中获得完全控制:
public int PersonNumber { get; set; }
public string PersonNumberText { get { return ... } }
您可以使用Binding
的属性StringFormat
很好的例子:http://blogs.msdn.com/b/mikehillberg/archive/2008/05/29/trying-out-binding-stringformat.aspx
除了公布的答案外,还有转换器的方法。