我有一个自定义类型(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/