Wpf 禁用列表框不会更改样式中的背景色

Wpf 禁用列表框不会更改样式中的背景色,wpf,background,listbox,styles,disabled-control,Wpf,Background,Listbox,Styles,Disabled Control,我有一个简单的样式,当禁用列表框时,它不会改变列表框的背景: <Style TargetType="ListBox" > <Style.Triggers> <Trigger Property="IsEnabled" Value="True"> <Setter Property="Background" Value="Red"/> </Tri

我有一个简单的样式,当禁用
列表框时,它不会改变
列表框的背景:

<Style TargetType="ListBox" >                    
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="True">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Background" Value="Orange"/>
        </Trigger>
    </Style.Triggers>
</Style>


Snoop在这一点上帮不了我,我无法找到一种不覆盖模板的简单方法。有人有一个简单的方法让它工作吗?TIA.

唯一的方法是覆盖模板

当禁用列表框时,您可以通过更改内置模板使用的颜色来更改列表框本身的背景颜色。您可以通过样式资源来实现这一点。只需将下面的代码粘贴到Listbox元素中,当您禁用该框时,背景将是透明的

<ListBox.Style>
    <Style TargetType="{x:Type ListBox}">
        <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent"/>
        </Style.Resources>
    </Style>
</ListBox.Style>

当一个项目高亮显示且方框失去焦点时,想要修改其背景色也是很常见的。。要更改这些内容,您可以参考以下文章:

你也在列表框上设置了背景吗?@H.B-然后他会覆盖样式列表框的颜色。这篇文章可能会引导你找到答案@迈尔斯基:这正是我的观点。@H.B.-我还是不明白你的评论。除了IsEnabled=False之外,触发器是有效的,那么他为什么要覆盖他的样式呢。他需要做一个模板,就像唯一的方法一样。你能分享你覆盖ListBox模板的工作示例代码吗。因为在我重写ListBox模板后,它对我不起作用