我正在我的项目中实现数据差异,现在我需要向用户显示我的结果。
(我正在检查两个任意数据数组,发现其中不匹配,结果如下:
“状态:不匹配,属性:…索引:…“(某个类)”。所以现在它工作得很好,首先我认为在DATAGRID中强调结果很容易,但是当我开始实现这一点时,我意识到我无法想象如何完成这一点……我需要强调预置的单元格和行……是否存在共同的解决方案?P.S数据网格正在绑定到某些数据(使用视图)。我在WPF中没有太多的经验,所以不想重新发明,认为应该存在一些东西(解决方案,开源项目,代码示例)。

最佳答案

这是你需要的例子。
我假设ChangeItem是存储一行的类。所以在xaml中,将ChangeItem[]绑定到datagrid的ItemsSource属性。

class ChangeItem
{
    public string Previous { get; set; }
    public string Current  { get; set; }
    public bool HasDiff { return this.Previous != this.Current; }
}

在xaml中向资源添加特殊样式
<Style TargetType="{x:Type DataGridCell}">
    <Style.Triggers>
       <DataTrigger Binding="{Binding HasDiff}" Value="true">
          <Setter Property="Background" Value="Red"/>
       </DataTrigger>
    </Style.Triggers>
</Style>

如果需要支持编辑和实时背景更改,具体取决于所做的更改。然后在类中正确地实现INotifyPropertyChanged
如果需要有两个以上的状态(haserror/noerrors),则创建新的枚举,表示状态。例如:
public enum LineState
{
     Normal,
     SmallError,
     MegaError,
}

并用类似于ChangeItem的内容替换public bool HasDiff { ... }属性。
希望这有帮助。

09-05 03:27