这是交易。
我有一个数据网格(实际上是一个telerik rad网格,但我认为它没有多大区别),我们有许多货币列(接近10)我们想要以非常特定的方式格式化(即不是典型的我们通常的$ 0.00格式)。为了做到这一点,我们使用转换器,它完美地工作。但是,出现了两个问题
我们尝试在网格中输入实际格式,但如果使用转换器,结果并不总是相同。例如,如果我们输入“#,0.00”(2位小数和千位分隔符),如果字符串格式在网格中而不是10 000.00(这里是空格中的千位分隔符),则得到10,000.00。这就是我们开始首先使用转换器的原因。
我在想,有没有办法创建或覆盖字符串格式。举个例子
{Binding Price, StringFormat='c2'}
代表2位小数的货币。我们可以以某种方式改变它,以便它能按照我们想要的方式工作吗?这应该不需要转换器,并且很可能加速渲染。
谢谢。
除了在要格式化的值上调用StringFormat
方法时更改使用的区域性,您无法更改ToString()
的应用方式。
您可以设置列的DataFormatString
属性:https://docs.telerik.com/devtools/wpf/controls/radgridview/columns/data-formatting
或者,您可以从视图模型返回已格式化的值,并直接在此类中执行任何转换逻辑,而不是使用转换器:
<telerik:GridViewDataColumn DataMemberBinding="{Binding FormattedValue}" ... />
最后,唯一缺少的是这个:
IsLocalizationLanguageRespected = “假”