【发布时间】:2016-09-27 12:52:34
【问题描述】:
我在绑定到 WPF 数据网格的数据表中获取动态列(因为列是动态生成的,所以没有模型)。这些是自动生成的列。我需要根据条件更改数据网格的单元格颜色。那里是列(进度),每列都有一个逗号分隔值。这些数字将决定 column1、column2、column3 的单元格的颜色。我需要一种方法来使用列(进度)中的值来设置单个单元格的样式颜色特定列。
| Coulmn1 | Coumn2 | Column3 | Progress |
| 123 | ABC | TRUE | C1=0.5,C2=1,C3=0 |
| 456 | CDF | TRUE | C1=1,C2=1,C3=0 |
| 789 | EFG | TRUE | C1=0,C2=1,C3=0 |
颜色将是0=Red,0.5=LightRed,1=Green,例如
| Coulmn1 | Coumn2 | Column3 | Progress |
| 123 (LightRed) | ABC (Green) | TRUE (Red) | C1=0.5,C2=1,C3=0 |
【问题讨论】:
-
为
DataGridCell创建一个隐式样式并使用转换器设置它的背景颜色。转换器需要知道行的数据项和单元格所在的列,因此它可能需要是MultiValueConverter。转换器需要将数据项转换为DataGridRow对象,获取Progress单元格,并根据列决定返回哪种颜色。或者,您可以为您的 DataGrid 创建一个适当的支持对象并将您的数据解析为这些对象,其中将包含一个您可以绑定到的Color属性。我的偏好是#2。