【发布时间】:2012-10-01 12:09:54
【问题描述】:
我有一个自定义类型(SINumber,它表示带有适当单位和前缀的 SI 编号)。我可以很好地绑定到SINumber 并覆盖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(),因为所需的精度在应用程序中的不同位置会有所不同。
提前致谢。
【问题讨论】:
标签: c# wpf data-binding string-formatting iformatprovider