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

问题描述 投票:0回答:2

这是交易。

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

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

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

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

{Binding Price, StringFormat='c2'}    

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

谢谢。

.net wpf string-formatting
2个回答
0
投票

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

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

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

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

0
投票

最后,唯一缺少的是这个:

IsLocalizationLanguageRespected = “假”

© www.soinside.com 2019 - 2024. All rights reserved.