【发布时间】:2017-03-06 08:01:00
【问题描述】:
我正在尝试为 DataGrid 中具有特定值的每个单元格设置特定颜色。我在网上看到了很多,但我没有找到一个接近我的情况。
基本上我有这个DataGrid 结构:
<DataGrid ItemsSource="{Binding MatchService.Matches}" AutoGenerateColumns="False"
CanUserAddRows="false" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="{DynamicResource championship}" Binding="{Binding Competition}"/>
<DataGridTextColumn Header="1" Binding="{Binding HomeWin}"/>
<DataGridTextColumn Header="X" Binding="{Binding Draw}"/>
</DataGrid.Columns>
所以我需要使用纯 xaml 解决方案,特别是处理所有单元格值的通用样式。例如,如果HomeWin 单元格的值为<50,则单元格背景将为red,如果单元格值为>60,则背景将为绿色。
如何在没有编写转换器等的情况下为每个DataGridTextColumn 创建默认样式并绑定它?
谢谢。
【问题讨论】:
-
您可以为
DataGridTextColumn定义默认样式,但如果您想要在触发器中进行属性值比较而不是“等于”,则必须编写一个转换器。并且不要编写 NumberToBrush 转换器。编写一个数字比较转换器并将画笔设置在使用该触发器的 DataTrigger 中。 -
没有纯粹的 XAML 解决方案。您必须实现和使用绑定转换器。这是我第四次关闭这个问题作为重复。请停止一次又一次地问同样的问题。这里也不欢迎第二个 StackOverflow 用户帐户。
-
@Clemens,严格来说,有一个纯 xaml 解决方案:每个可能值的 cellStyle 中的 dataTrigger。但是它仅适用于有限(和更好的小)值集(例如,枚举、布尔值)
-
@ASh 我只有双倍的价值。
-
@Clemens 是一位温和派,他给予无知甚至投反对票的用户。恭喜,期待在未来几天内收到投诉。