Wpf 根据数据更改选定列表框项目的背景/突出显示颜色
我想使用数据绑定更改选定列表框项目的背景/强光颜色。这是我已经尝试过的,但它不起作用。我不确定如何使参考资料部分具有“当前项”上下文 颜色是显示的每个项目的属性(每个项目具有不同的值)Wpf 根据数据更改选定列表框项目的背景/突出显示颜色,wpf,xaml,data-binding,Wpf,Xaml,Data Binding,我想使用数据绑定更改选定列表框项目的背景/强光颜色。这是我已经尝试过的,但它不起作用。我不确定如何使参考资料部分具有“当前项”上下文 颜色是显示的每个项目的属性(每个项目具有不同的值) 您可以使用触发器来实现: <Style TargetType="ListBoxItem"> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Set
您可以使用
触发器来实现:
<Style TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding Color}" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
或者,您可以使用某种类型的转换器将Background
属性绑定到Color
对象:
<Style TargetType="ListBoxItem" Background="{Binding Color, Converter={StaticResource
SomeColourConverter}}" />
另一个解决方法是使用颜色属性设置背景,并将HightlightBrushKey设置为透明。我已将该片段放入
中,但我仍然获得默认颜色。我认为突出显示样式会覆盖背景。如果我在我的示例中直接使用颜色,它会工作,但在数据绑定时它不会。查看输出窗口-您有任何错误吗?。。。如果是,他们会怎么说?您的数据项上是否有要绑定到命名的Color
的属性?出现错误:System.Windows.data错误:2:找不到目标元素的治理FrameworkElement或FrameworkContentElement。BindingExpression:Path=Color;DataItem=null;目标元素是“SolidColorBrush”(HashCode=21176298);目标属性为“Color”(键入“Color”)
。我确实对这些项目有颜色属性。我觉得样式部分中没有上下文。@Robert Massa:您的绑定
不起作用(在您的示例中),因为SolidColorBrush
放在资源上。在资源中,绑定不起作用,因为它不是可视化树或模板的一部分?我希望颜色取决于所选项目,而不是静态的。还是我遗漏了什么?
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource Color}" />
</Trigger>
<Style TargetType="ListBoxItem" Background="{Binding Color, Converter={StaticResource
SomeColourConverter}}" />