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

时间:2011-12-09 15:07:19

标签: c# wpf xaml datagrid datatrigger

我见过类似this

的帖子

然而,他们似乎没有回答我的问题。我在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>

正如您所看到的,我尝试了许多不同的方法来“触发”颜色变化,但没有一个触发。如果我在触发器中放置一个通用设置,它将改变颜色。

我认为问题在于我从动态数据集绑定到数据网格,这些数据可能每天都在变化,所以我使用数据表(下面),因为有不同数量的coulmns意味着我可以不要为每一行使用对象,因为我不知道列/属性的数量何时会改变。

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

我只需要知道如何触发触发器来更改属性,具体取决于从数据表创建到listource的单元格的值。

1 个答案:

答案 0 :(得分:1)

link是否提供任何帮助?似乎绑定到DataTable可能会导致一些细胞着色问题,您是否尝试过实现数据转换器和MultiDataBinding,如文章所示?