我正在努力解决看似简单的问题: 我有一个绑定到数据表的数据网格。这个数据表包含一个名为“COLORSTATUS”的列(一个枚举值) - 我想根据ColorStatus绘制数据表的每个ROW。 我试图建立一个值转换器 - 但我无法将它传递给整行和/或数据表。 我很想用Caliburns消息连接DataGridRow事件 - 但是如何在XAML中执行此操作 - 我只能使用DataGrid.RowStyle元素。
<DataGrid x:Name="excelDataTable_ExcelData" cal:Message.Attach="[Event AutoGeneratedColumns] = [Action HideTheColorColumn($source)]">
?? What to do here
</DataGrid>
我决定采用这个解决方案:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="{Binding Row, Converter={StaticResource ExcelRowColorConverter}}"></Setter>
</Style>
</DataGrid.RowStyle>
我有点惊讶,你可以通过“Row”。 作为转换器的提示:传递的对象是实际的DataRow。
答案 0 :(得分:1)
转换器应该可以正常工作,但您需要确保将其应用于正确的位置。
只需将DataRow
传递给它,从中获取“COLORSTATUS”列值,然后返回相应的颜色画笔。
例如,
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow }">
<!-- DataContext will be your DataRow -->
<Setter Property="Background"
Value="{Binding Converter={StaticResource MyColorConverter}}" />
</Style>
</DataGrid.Resources>