【发布时间】:2010-09-07 16:54:17
【问题描述】:
我有一个 WPF DataGrid 并希望将货币格式应用于几个列。我可以使用 Binding={Binding FieldName, StringFormat={}{0:C} 在每列的基础上执行此操作,但我更愿意定义一次货币格式 - 大概在 <Style> 资源中 - 然后将该资源应用于需要格式化的每一列。
问题是,我不知道如何从样式中设置绑定的 StringFormat 属性。是否可以在<Style> 中设置该属性或类似属性,还是我用这种方法找错了树?
更新:我已成功将样式应用于 DataGridTextColumn 中的单元格,并且设置单元格的 ContentStringFormat 属性似乎是可行的方法......但是我放在那里的任何价值似乎都被忽略了。
【问题讨论】:
-
如果您要按列应用样式,那么应用 StringFormat 有什么问题?我认为如果在绑定中而不是在样式中完成,它会更容易阅读。
-
可能更具可读性,是的。但我正在考虑扩展:假设将来我希望所有货币列的格式为当它们包含负数时它们的文本颜色变为红色(如财务预表中常见的那样)。这就是我想要封装在一种风格中的常见行为;而且我讨厌在不同的地方使用颜色格式和货币格式...
-
在参考负值时,我会将单元格的 ForeColor 绑定到该值并使用转换器,返回 Red 作为负值。