【问题标题】:Is there a way to make XAML / C# StringFormat show whole dollars for larger amounts but cents for smaller amounts?有没有办法让 XAML / C# StringFormat 显示较大金额的整美元但较小金额的美分?
【发布时间】:2011-04-13 00:26:20
【问题描述】:

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

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

在我继续编写一些比较混乱和特定的代码之前,有没有人有一个很好的聪明的方法来做到这一点?理想情况下,这一切都在 StringFormat 中:)

【问题讨论】:

    标签: c# wpf xaml binding string-formatting


    【解决方案1】:

    我看不出如何将所有这些逻辑放在 StringFormat 中。

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

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

    【讨论】:

    • 谢谢,你可能是对的,我正在考虑字符串版本。我的绑定是单向的,但我会让这个问题运行一段时间。
    【解决方案2】:

    不要害怕为这个特定场景创建一个值转换器。

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

    Jay 的建议可能与您的要求一样干净,需要对格式化阈值使用逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多