C# 如何在WPF DataGRID的specifics单元格中设置文本颜色

C# 如何在WPF DataGRID的specifics单元格中设置文本颜色,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我有一个比较两个数据表中数据的方法。在比较之后,我想在WPF dataGRID中可视化这些比较数据(在名为ChangeTab的新数据表中) 我正在从DataContext填充datagrid: win.TableOfChange.DataContext = ChangeTab.DefaultView; 我假定您是在比较过程中构建源表的,如果是这样,您可以轻松地存储一个表示相等的布尔值。然后在中,您可以在该属性上使用,并将该属性更改为所需的值。我倾向于对网格中的大多数列使用DataTemplat

我有一个比较两个数据表中数据的方法。在比较之后,我想在WPF dataGRID中可视化这些比较数据(在名为ChangeTab的新数据表中)

我正在从DataContext填充datagrid:

win.TableOfChange.DataContext = ChangeTab.DefaultView;

我假定您是在比较过程中构建源表的,如果是这样,您可以轻松地存储一个表示相等的布尔值。然后在中,您可以在该属性上使用,并将该属性更改为所需的值。

我倾向于对网格中的大多数列使用DataTemplates。您需要创建一个类,如下所示:

class CellContent
{
    public object Content { get; set; }
    public bool IsDifferent { get; set; }
}
<DataTemplate x:Key="bob">
    <ContentPresenter Content="{Binding Path=Content}" TextElement.Foreground="{Binding Path=IsDifferent, Converter={StaticResource myConverter}}" />
<DataTemplate>
然后创建一个数据模板,如下所示:

class CellContent
{
    public object Content { get; set; }
    public bool IsDifferent { get; set; }
}
<DataTemplate x:Key="bob">
    <ContentPresenter Content="{Binding Path=Content}" TextElement.Foreground="{Binding Path=IsDifferent, Converter={StaticResource myConverter}}" />
<DataTemplate>

然后将模板指定给每列


另一个可能更好的选择是,如果IsDifferent为真,则使用触发器更改颜色。

是否有用于设置颜色的业务逻辑?没有,这是我的建议。我想用绿色显示未更改的值,用红色显示已更改的值。@VilemRousi:哪个绑定?(MikeKulls的回答给出了一个很好的轮廓,你只需要将前台绑定放入
DataTrigger.binding
,当然不需要转换器)感谢你的回答,我认为这是一个好方法,但我不确定绑定,我无法解决它。因为比较的结果只有一行,所以我可以向这个DataTable添加具有比较状态的新行(0-无更改,1-新值,2-更改)。因此,比较表的列(名称:treti)现在有2行(值和比较状态)。问题在于绑定。我正在尝试这样的事情:
,但这不起作用。请你再帮我一次好吗?@VilemRousi:你需要有单元格级别的信息,并在单元格级别应用触发器(
CellStyle
),处理整行是行不通的。