WPF:覆盖数字和货币格式以摆脱转换器

时间:2018-02-27 15:29:10

标签: .net wpf string-formatting

这是合约。

我有一个数据网格(实际上是一个telerik rad网格,但我认为它没有多大区别),我们有很多货币列(接近10)我们想以非常特殊的方式格式化(即不是我们通常的典型$ 0.00格式)。为了做到这一点,我们使用转换器,它完美地工作。但是,出现了两个问题

  • 所有具有此类格式的列都需要较长的定义(Converter = {static ...带参数,因此我们只有一个转换器。
  • 我觉得使用转换器可以减慢网格渲染速度。

我们尝试在网格中输入实际格式,但如果使用转换器,结果并不总是相同。例如,如果我们把"#,0.00" (2个十进制和一千个分隔符),如果字符串格式在网格中而不是10 000.00(这里的空间中的千位分隔符),则得到10,000.00。这就是我们开始首先使用转换器的原因。

我在想,有没有办法创建或覆盖字符串格式。例如

{Binding Price, StringFormat='c2'}    

代表2位小数的货币。我们可以以某种方式改变它,以便它能按照我们想要的方式工作吗?这应该不需要转换器,并且很可能加速渲染。

感谢。

2 个答案:

答案 0 :(得分:0)

除了在要格式化的值上调用StringFormat方法时更改所使用的区域性,您无法更改ToString()的应用方式。

您可以设置列的DataFormatString属性:https://docs.telerik.com/devtools/wpf/controls/radgridview/columns/data-formatting

或者您可以从视图模型返回已格式化的值,并直接在此类中执行任何转换逻辑,而不是使用转换器:

<telerik:GridViewDataColumn DataMemberBinding="{Binding FormattedValue}" ... />

答案 1 :(得分:0)

最后,唯一遗漏的是:

IsLocalizationLanguageRespected = “假”

相关问题