可以使用WPF样式将货币格式应用于DataGrid单元格吗?

时间:2010-09-07 16:54:18

标签: wpf xaml datagrid

我有一个WPF DataGrid,并希望将货币格式应用于多个列。我可以使用Binding={Binding FieldName, StringFormat={}{0:C}按列进行此操作,但我更喜欢定义一次货币格式 - 可能是在<Style>资源中 - 并且只将该资源应用于需要格式化的每个列

问题是,我不知道如何在样式中设置Binding的StringFormat属性。是否有可能在<Style>中设置该属性或类似属性,或者我用这种方法咆哮错误的树?

更新:我已成功将样式应用于DataGridTextColumn中的单元格,并设置单元格的ContentStringFormat属性似乎是要走的路。但是我放在那里的任何价值似乎都被忽略了。

1 个答案:

答案 0 :(得分:1)

您可以为DataGrid单元格创建模板,并使用{TemplateBinding ContentPresenter.Content}值作为converter参数。

我没有测试过这段代码,但是有点像:

<ControlTemplate TargetType="{x:Type DataGridCell}" x:Key="CurrencyFormatCell">
    <TextBlock 
        Text="{TemplateBinding ContentPresenter.Content, Converter={StaticResource FormatCurrencyConverter}}"
        ForeGround="{TemplateBinding ContentPresenter.Content, Converter={StaticResource CurrencyTextColorConverter}}"
        />
</ControlTemplate>