【问题标题】:Can I use IFormatProvider with a WPF Binding to a custom type?我可以将 IFormatProvider 与 WPF 绑定一起使用到自定义类型吗?
【发布时间】:2012-10-01 12:09:54
【问题描述】:

我有一个自定义类型(SINumber,它表示带有适当单位和前缀的 SI 编号)。我可以很好地绑定到SINumber 并覆盖SINumber.ToString(),但显示的是调用 SINumber.ToString() 的结果。

例如,SIMeasurement 的类型为 SINumber,SI 值为 3099999.9046325684 Ω。使用以下绑定,我得到 3.09999990463257 MΩ 的输出。

<TextBlock Text="{Binding SINMeasurement}"></TextBlock>

单位 (Ω) 和前缀 (M = mega) 对话是正确的,问题在于显示的数字数量。我希望能够使用自定义格式化程序(实现 IFormatProvider ICustomFormatter?)来解释绑定中的 StringFormat,并合并我的 SI 逻辑(更改前缀)以显示 3.10 MΩ。下面是我想使用的绑定示例,其中精度是可自定义的(在本例中为 0.00),并且单位的位置由“U”确定。

<TextBlock Text="{Binding SINMeasurement, StringFormat='{}{0:0.00 U}'}"></TextBlock>

有什么想法吗?我不想使用硬编码的SINumber.ToString(),因为所需的精度在应用程序中的不同位置会有所不同。

提前致谢。

【问题讨论】:

    标签: c# wpf data-binding string-formatting iformatprovider


    【解决方案1】:

    让你的数据类型实现IFormattable接口。每次 Binding 使用您为 Binding 指定的 StringFormat 将您的对象转换为字符串时,都会调用其方法 public string ToString(string format, IFormatProvider formatProvider)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      相关资源
      最近更新 更多