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

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

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


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

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


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

提前致谢。

最佳答案

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

关于c# - 是否可以将IFormatProvider与WPF绑定(bind)到自定义类型一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12829213/

10-12 00:26
查看更多