2

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

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

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

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

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

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

提前致谢。

4

1 回答 1

0

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

于 2012-10-28T13:33:34.717 回答