如何在WPF DataGRID中的特定单元格中设置文本的颜色

时间:2012-08-23 22:16:35

标签: c# wpf xaml datagrid

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

我从DataContext填充datagrid:

win.TableOfChange.DataContext = ChangeTab.DefaultView;
<DataGrid ItemsSource="{Binding}" Height="107" HorizontalAlignment="Left"....

我正在解决问题,如何用红色来显示不同的数据(在DataTables中),以及与绿色相同的数据 - 如图所示:

enter image description here

是否有办法,如何做到这一点(将颜色设置为WPF dataGRID单元格中的某些红色和某些绿色来自C#)?

非常感谢!

2 个答案:

答案 0 :(得分:1)

我假设您在比较过程中构建源表,如果是这样,您可以轻松存储指示相等的布尔值。然后在CellStyle中,您可以在该媒体资源上使用DataTrigger,并SetterTextElement.Foreground属性更改为所需的值。

答案 1 :(得分:0)

我倾向于将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>

然后将模板分配给每列。

另一个可能更好的选择是在IsDifferent为真时使用Trigger来改变颜色。