WPF GridControl单元格值与过滤值相同时,改变单元格背景色

时间:2025-03-31 23:04:55

DataTrigger的Value不可绑定,所以我们需要用MultiBinding来实现这个功能。

  <dxg:TableView.CellStyle>
<Style TargetType="{x:Type dxg:LightweightCellEditor}" BasedOn="{StaticResource {dxgt:GridRowThemeKey ResourceKey=LightweightCellStyle}}">
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource multiValueEqualityConverter}">
<Binding Path="Value" Mode="OneWay" />
<Binding RelativeSource="{RelativeSource AncestorType={x:Type local:WI}}" Path="DataContext.CurrentFilterValue" Mode="OneWay" />
<Binding RelativeSource="{RelativeSource AncestorType={x:Type local:WI}}" Path="DataContext.FIsFilter" Mode="OneWay" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="Background" Value="Orange"/>
</DataTrigger>
</Style.Triggers>
</Style>
</dxg:TableView.CellStyle>
    public class MuliteConvertEqual : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values != null)
{
if (values[] != null && values[] != null && values[] !=null)
{
if (values[].ToString() == values[].ToString()&& System.Convert.ToBoolean(values[])==true)
{
return true;
}
} } return false;
} public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
return null;
}
}

将单元格的值,viewmodel中的过滤值进行MultiBinding,在converter中进行比较,如果相同,则触发单元格背景色变色。

WPF GridControl单元格值与过滤值相同时,改变单元格背景色