2

我正在努力解决一个看似简单的问题:我有一个绑定到数据表的数据网格。此数据表包含一个名为“COLORSTATUS”的列(一个枚举值) - 我想根据 ColorStatus 绘制数据表的每一行。我试图构建一个值转换器 - 但我无法将它传递给整个行和/或数据表。我有关于用 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。

4

1 回答 1

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>
于 2013-04-17T13:32:49.233 回答