如何通过由数组绑定的值更改 WPF 数据网格单元格的前景



我只需要更改单元格内容的文本颜色,但我的单元格由包含数组属性(我需要(的实体列表绑定。

这是我的代码:--实体:

  public class MyEntity{
        public string Name { get; set; }     
        public IList<string> Values { get; set; }   
        }

-- 数据网格和列表

ObservableCollection<MyEntity> list;
// ....
DataGrid.ItemsSource = list;

--风格

<Style x:Key="DgCellStyle" TargetType="DataGridCell">
          <Style.Triggers>
            <DataTrigger Binding="{Binding Values[{Binding self}]}" Value="KK">
                <Setter Property="Foreground" Value="Red" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

-- 如果我使用 Binding="{绑定值[2]}",它可以工作,但前额适用于行(而不是当前单元格(。

您可以使用

IValueConverer来实现此目的

public class simpleListCheckConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value != null && ((List<String>)value).Contains((string)parameter))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

和 Xaml :

<local:simpleListCheckConverter x:Key="simpleListCheckConverter1"/>
    <Style x:Key="DgCellStyle" TargetType="DataGridCell">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=Values, Converter={StaticResource simpleListCheckConverter1 },ConverterParameter=kk}" Value="true">
                <Setter Property="Foreground" Value="Red" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

对于行颜色更改:

<Style TargetType="DataGridRow">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=Values, Converter={StaticResource simpleListCheckConverter1 },ConverterParameter=kk}" Value="true">
                <Setter Property="Background" Value="Yellow" />
            </DataTrigger>
        </Style.Triggers>
    </Style>

相关内容

  • 没有找到相关文章

最新更新