WPF DataGrid行/列/单元格突出显示

时间:2010-12-18 21:33:53

标签: c# wpf datagrid highlighting

我正在我的项目中实现数据差异,现在我需要向用户显示我的结果。 (我正在检查两个任意数据数组并发现它们不匹配,我的结果如下: “状态:不匹配,财产:......指数:......”(某些类))。所以它现在运行得很好,首先我认为在DataGrid中突出显示结果会很容易,但是当我开始实现这个时,我意识到我无法想象如何完成这个...我需要突出显示预设单元格和行...是否存在任何常见解决方案? P.S DataGrid绑定到某些数据(使用视图)。我对WPF没有多少经验,所以不要重新发明轮子,想想应该存在的东西(解决方案,开源项目,代码示例)。

1 个答案:

答案 0 :(得分:4)

以下是您需要的示例。

  1. 我假设ChangeItem是用于存储一行的类。因此,在xaml中,您将ChangeItem[]绑定到数据网格的ItemsSource属性。

    class ChangeItem
    {
        public string Previous { get; set; }
        public string Current  { get; set; }
        public bool HasDiff { return this.Previous != this.Current; } 
    }
    
  2. 在Xaml中为您的资源添加特殊样式

    <Style TargetType="{x:Type DataGridCell}">
        <Style.Triggers>
           <DataTrigger Binding="{Binding HasDiff}" Value="true">
              <Setter Property="Background" Value="Red"/>
           </DataTrigger>
        </Style.Triggers>
    </Style>
    
  3. 如果您需要支持编辑和实时背景更改,具体取决于所做的更改。然后在课程ChangeItem中正确实施INotifyPropertyChanged

  4. 如果您需要超过2个状态(HasError / NoErrors),则创建表示状态的新枚举。例如:

    public enum LineState
    {
         Normal,
         SmallError,
         MegaError,
    }
    

    public bool HasDiff { ... }属性替换为public LineState State { ... }

  5. 希望这有帮助。