我正在我的项目中实现数据差异,现在我需要向用户显示我的结果。 (我正在检查两个任意数据数组并发现它们不匹配,我的结果如下: “状态:不匹配,财产:......指数:......”(某些类))。所以它现在运行得很好,首先我认为在DataGrid中突出显示结果会很容易,但是当我开始实现这个时,我意识到我无法想象如何完成这个...我需要突出显示预设单元格和行...是否存在任何常见解决方案? P.S DataGrid绑定到某些数据(使用视图)。我对WPF没有多少经验,所以不要重新发明轮子,想想应该存在的东西(解决方案,开源项目,代码示例)。
答案 0 :(得分:4)
以下是您需要的示例。
我假设ChangeItem
是用于存储一行的类。因此,在xaml中,您将ChangeItem[]
绑定到数据网格的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>
如果您需要支持编辑和实时背景更改,具体取决于所做的更改。然后在课程ChangeItem
中正确实施INotifyPropertyChanged。
如果您需要超过2个状态(HasError / NoErrors),则创建表示状态的新枚举。例如:
public enum LineState
{
Normal,
SmallError,
MegaError,
}
将public bool HasDiff { ... }
属性替换为public LineState State { ... }
。
希望这有帮助。