更改组合框中某些行的背景颜色

时间:2014-07-25 18:06:05

标签: c# wpf

我有一个绑定的组合框,根据我在记录中返回的值,我想改变组合框中某些行的背景颜色。这有可能吗?如果可以的话怎么样?

再澄清一点。我正在查看每行中的一个字段,并根据其值我想要更改背景颜色。所以我可以改变所有的行,一些行,或者没有行。

由于

2 个答案:

答案 0 :(得分:3)

使用ItemContainerStyle设置每行的项目背景颜色。您可以绑定到行的数据上下文中的属性,并使用IValueConverter来获取相应的画笔。例如,假设项目具有属性“Y”:

<ComboBox>
    <ComboBox.Resources>
        <local:BoolToBrushConverter x:Key="BoolToBrushConverter" />
    </ComboBox.Resources>
    <ComboBox.ItemContainerStyle>
        <Style TargetType="ComboBoxItem">
            <Setter Property="Background" 
                    Value="{Binding Y,Converter={StaticResource BoolToBrushConverter}}" />
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>

然后“BoolToBrushConverter”会是这样的:

public class BoolToBrushConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (value as bool? == true) ? Brushes.Green : Brushes.Red;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

答案 1 :(得分:1)

为项目创建模板,其中包含绑定到显示值的文本块。

创建一个自定义IValueConverter,将您的其他值转换为颜色。

将背景绑定到您的其他值并使用转换器。