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}}" />