有没有办法让XAML / C#StringFormat显示较大金额的全部美元,但较小金额的美分?

时间:2010-09-16 03:36:24

标签: c# wpf xaml binding string-formatting

在XAML中,使用StringFormat='$#,0;$-#,0;Nil'很容易将绑定的整数变量显示为格式良好的美元金额。例如,1024将出现'$ 1,024'。

我需要处理从几美分到几百美元不等的数字 - 所以0.45应该显示为'$ 0.45',但是应该显示任何大于某个阈值(1?9.99?)的数字作为一个整体的金额。例如。 12.73应显示为“$ 13”。

在我继续推出一些中等杂乱且特定的代码之前,有没有人有一个很好的聪明方法来做到这一点?理想情况下,它将全部在StringFormat:)

2 个答案:

答案 0 :(得分:7)

我无法看到所有这些逻辑如何放入StringFormat。

我认为最简洁的方法是IValueConverter实施。您可以使用转换器参数来设置阈值,以便转换器可以重复使用,并且没有硬编码值。

除非你使用双向绑定,并且如果你正在实现MVVM,最好在视图模型中有一个字符串变量,它根据整数值返回显示值。

答案 1 :(得分:1)

不要害怕为此特定情况创建值转换器。

如果这种类型的格式存在业务需求,那么它很可能会在以后重复使用,并使其成为值转换器,使其更容易重用和测试。

Jay的建议可能很干净,因为您的要求需要使用逻辑格式化阈值。