我正在我的项目中实现数据差异,现在我需要向用户显示我的结果。
(我正在检查两个任意数据数组,发现其中不匹配,结果如下:
“状态:不匹配,属性:…索引:…“(某个类)”。所以现在它工作得很好,首先我认为在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 { ... }
属性。希望这有帮助。