当使用数据表作为IListSource填充时,根据值更改WPF DataGrid单元格的背景

本文关键字:WPF DataGrid 背景 单元格 数据表 填充 IListSource | 更新日期: 2023-09-27 18:17:34

我看过类似的帖子

然而,他们似乎没有回答我的问题。我在WPF应用程序中有一个XAML数据网格
<DataGrid AutoGenerateColumns="True" Grid.Row="1" AlternationCount="2" HeadersVisibility="Column" Name="dgSkillsMatrix" Margin="0,0,0,1" HorizontalGridLinesBrush="White" VerticalGridLinesBrush="White" AlternatingRowBackground="#FFD0D0EB" RowBackground="#FFECECF5" FontSize="12">
    <DataGrid.CellStyle>
        <Style TargetType="{x:Type DataGridCell}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Value}" Value="1">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Content}" Value="2">
                    <Setter Property="Background" Value="Green"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Text}" Value="1">
                    <Setter Property="Background" Value="Black"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding Name}" Value="Temp">
                    <Setter Property="Background" Value="Black"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.CellStyle>
</DataGrid>

正如你所看到的,我已经尝试了许多不同的方法来"触发"颜色变化,但都没有成功。如果我在触发器上方设置一个通用设置,它将改变颜色。

我认为问题是我从一组每天都可能变化的动态数据绑定到数据网格,所以我使用一个数据表(如下),因为有不同数量的列,这意味着我不能为每行使用对象,因为我永远不知道什么时候列/属性的数量会改变。

this.dgSkillsMatrix.ItemsSource = (dt as IListSource).GetList();

我只需要知道如何触发一个触发器来改变属性取决于从一个数据表到listsource创建的单元格的值

当使用数据表作为IListSource填充时,根据值更改WPF DataGrid单元格的背景

这个链接有帮助吗?似乎绑定到数据表可能会导致单元格着色的一些问题,您是否尝试实现数据转换器和MultiDataBinding的文章建议?