禁用Listbox不会改变样式中的背景颜色

5

我有这个简单的样式,当ListBox被禁用时不会改变ListBoxBackground

<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在这方面对我没有帮助,而且我无法想到一个简单的方法来解决它,而不必覆盖模板。 有没有人知道一个简单的方法来使其工作? 先谢谢了。


@H.B - 那他将会覆盖他的样式。 - MyKuLLSKI
1
ListBox的颜色很奇怪。这篇文章可能会给你答案。http://stackoverflow.com/questions/7298282/wpf-listbox-selected-item-background - paparazzo
@H.B. - 我还是不理解你的评论。触发器可以正常工作,除了IsEnabled = False之外,那么他为什么要覆盖他的样式呢?他需要制作一个模板。 - MyKuLLSKI
@BalamBalam,我不是为选定的项目设置样式,而是为列表框本身设置样式。 - Klaus Nji
@e28Makaveli,您能否分享一个工作的示例代码,其中覆盖了 ListBox 的模板?因为在我覆盖 ListBox 模板后它并不能正常工作。 - SharpUrBrain
显示剩余2条评论
2个回答

2

唯一的方法是通过覆盖模板来实现


好像这是唯一的出路。 - Klaus Nji
3
请分享一个工作示例代码,其中您覆盖了ListBox的模板。因为在我覆盖ListBox模板后,它对我无效。 - SharpUrBrain

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接