我有一个绑定的组合框,根据我在记录中得到的值,我想改变组合框中某些行的背景颜色。这可能吗?如果可能,又是如何做到的?再澄清一下。我正在查看每一行中的一个字段,并根据其值更改背景颜色。所以我可以改变所有的行,一些行,或者不改变任何行。谢谢
cx6n0qe31#
使用ItemContainerStyle设置每行的项目背景色。您可以绑定到行的数据上下文中的属性,并使用IValueConverter获取适当的画笔。例如,假设项目具有属性“Y”:
ItemContainerStyle
IValueConverter
<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(); } }
uqxowvwt2#
为项目创建一个模板,其中包含一个绑定到显示值的文本块。创建一个自定义IValueConverter,将其他值转换为颜色。将背景绑定到其他值并使用转换器。
pvabu6sv3#
Combobox with border seperators
<ComboBox.ItemContainerStyle> <Style TargetType="ComboBoxItem"> <Setter Property="BorderBrush" Value="DarkGray" /> <Setter Property="BorderThickness" Value="0,1,0,0" /> </Style> </ComboBox.ItemContainerStyle>
3条答案
按热度按时间cx6n0qe31#
使用
ItemContainerStyle
设置每行的项目背景色。您可以绑定到行的数据上下文中的属性,并使用IValueConverter
获取适当的画笔。例如,假设项目具有属性“Y”:然后“BoolToBrushConverter”将是这样的:
uqxowvwt2#
为项目创建一个模板,其中包含一个绑定到显示值的文本块。
创建一个自定义IValueConverter,将其他值转换为颜色。
将背景绑定到其他值并使用转换器。
pvabu6sv3#
Combobox with border seperators