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

时间:2012-01-31 17:50:55

标签: wpf background listbox styles disabled-control

我有这种简单的风格,在ListBox被禁用时不会更改Background ListBox

<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。

2 个答案:

答案 0 :(得分:2)

执行此操作的唯一方法是覆盖模板

答案 1 :(得分:0)

只需更改内置模板使用的颜色,即可在禁用列表框时更改列表框本身的背景颜色。您可以通过样式资源执行此操作。只需将以下代码粘贴到Listbox元素中,当您禁用该框时,背景将是透明的。

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

当突出显示单个项目的背景颜色以及当框失去焦点时,想要修改它的背景颜色也很常见..要更改这些,您可以参考这篇文章: https://stackoverflow.com/a/7298301/1721136