我有一个自定义类型(SINumber
,它表示一个具有适当单位和前缀的SI号)。我可以绑定到SINumber
fine并覆盖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()
,因为在应用程序的不同位置,所需的精度会有所不同。
提前谢谢。
使您的数据类型实现IFormattable接口。每当Binding使用您为Binding指定的StringFormat将对象转换为字符串时,都会调用其方法公共字符串ToString(字符串格式,IFormatProvider formatProvider)。