我可以将IFormatProvider与到自定义类型的WPF绑定一起使用吗



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

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

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

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

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

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

提前谢谢。

使您的数据类型实现IFormattable接口。每当Binding使用您为Binding指定的StringFormat将对象转换为字符串时,都会调用其方法公共字符串ToString(字符串格式,IFormatProvider formatProvider)

相关内容

  • 没有找到相关文章

最新更新