我有一个WPF DataGrid,并希望将货币格式应用于多个列。我可以使用Binding={Binding FieldName, StringFormat={}{0:C}
按列进行此操作,但我更喜欢定义一次货币格式 - 可能是在<Style>
资源中 - 并且只将该资源应用于需要格式化的每个列
问题是,我不知道如何在样式中设置Binding的StringFormat属性。是否有可能在<Style>
中设置该属性或类似属性,或者我用这种方法咆哮错误的树?
更新:我已成功将样式应用于DataGridTextColumn中的单元格,并设置单元格的ContentStringFormat
属性似乎是要走的路。但是我放在那里的任何价值似乎都被忽略了。
答案 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>