我想根据使用Style更改的值显示不同的单元格背景颜色。这是我的代码。我的数据结构实现了INotifyPropertyChanged,每当属性发生变化时,它都会引发通知(例如HasChange)。因此我假设当HasChange被更改时,它将调用MyDummy转换器,它总是返回true,然后调用设置方法,MyConverter将计算出为背景绘制的颜色。
当应用程序启动时,它工作正常并显示正确的颜色。但是,当我更改任何单元格数据时,会执行MyDummy,但MyConverter永远不会再被调用。任何的想法? (请忽略RowData.Row,它们是datarow的DevExpress控件的一部分)。感谢。
解决方案:是使用Data而不是DataRow.Row
<local:MyColorConverter x:Key="MyConverter"/>
<local:MyDummy x:Key="MyDummy"/>
<Style TargetType="dxg:CellContentPresenter" x:Key="cellstyple">
<Style.Triggers>
<DataTrigger Value="true" Binding="{Binding RowData.Row.HasChange, Converter={StaticResource MyDummy}}">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="RowData.Row"/>
<Binding Path="Column.FieldName"/>
</MultiBinding>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
我使用的数据结构
public class MyStr : INotifyPropertyChanged
{
private string _Name;
public String Name
{
get
{
return _Name;
}
set
{
_Name = value;
HasChange = true;
}
}
public String City { get; set; }
private bool _hasChange;
public bool HasChange
{
get
{ return _hasChange; }
set
{
_hasChange = value;
NotifyChange("HasChange");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyChange(String name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
}
}