Отключение Listbox не меняет цвет фона в стиле

У меня есть этот простой стиль, который не меняет 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 не помогает мне в этом, и я не могу найти простой способ без переопределения шаблонов. У кого-нибудь есть простой способ заставить это работать? ТИА.


person Klaus Nji    schedule 31.01.2012    source источник
comment
Вы также установили фон для самого ListBox?   -  person H.B.    schedule 31.01.2012
comment
@H.B - Тогда он переопределит свой стиль   -  person MyKuLLSKI    schedule 31.01.2012
comment
Странные цвета ListBox. Этот пост может привести вас к ответу. stackoverflow.com/questions/7298282/   -  person paparazzo    schedule 31.01.2012
comment
@MyKuLLSKI: Это была именно моя точка зрения.   -  person H.B.    schedule 31.01.2012
comment
@Х.Б. - Я все еще не понимаю вашего комментария. Триггер РАБОТАЕТ, ЗА ИСКЛЮЧЕНИЕМ IsEnabled = False, так зачем ему переопределять свой стиль. Ему нужно сделать шаблон   -  person MyKuLLSKI    schedule 01.02.2012
comment
@BalamBalam, я стилизую не выбранный элемент, а сам список.   -  person Klaus Nji    schedule 02.02.2012
comment
@ e28Makaveli, не могли бы вы поделиться рабочим образцом кода, в котором вы переопределяете шаблон ListBox. Потому что это не работает для меня после того, как я переопределю шаблон ListBox.   -  person SharpUrBrain    schedule 30.03.2012


Ответы (2)


Единственный способ сделать это - переопределить шаблон

person MyKuLLSKI    schedule 31.01.2012
comment
Похоже, единственный выход. - person Klaus Nji; 02.02.2012
comment
не могли бы вы поделиться рабочим образцом кода, в котором вы переопределяете шаблон ListBox. Потому что он не работает для меня после переопределения шаблона ListBox - person SharpUrBrain; 30.03.2012

Вы можете изменить цвет фона самого списка, когда список отключен, просто изменив цвета, которые использует встроенный шаблон. Вы можете сделать это с помощью стилевых ресурсов. Просто вставьте приведенный ниже код в свой элемент 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/а/7298301/1721136

person Bill Tarbell    schedule 12.06.2013