Изменение ListBox Непрозрачность невыбранных элементов, когда один выбран - PullRequest
1 голос
/ 04 ноября 2011

У меня есть список со списком DataTemplate, Style и ItemContainerStyle.

Это поле списка имеет SelectionMode = "Single".

Изначально все предметы имеют Opacity="0.7", когда выбранный предмет, я делаю его Opacity="1"

<ListBox.ItemContainerStyle> 
<Style TargetType="{x:Type ListBoxItem}"> 
    <Style.Setters>
        <Setter Property="Opacity" Value="0.7"/>
    </Style.Setters>
    <Style.Triggers> 
        <DataTrigger Binding="{Binding IsEventLocked}" Value="False"> 
            <Setter Property="IsEnabled" Value="False"/>
            <Setter Property="Opacity" Value="0.2"/>
        </DataTrigger>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Opacity" Value="1"/>
        </Trigger>
    </Style.Triggers> 
</Style> 

Но мне также нужно сделать все остальные (невыбранные) элементы с помощью Opacity="0.2", пока выбранный элемент не будет отменен.

Вкратце: [По умолчанию (Непрозрачность = 0,7)] -> [ItemSelected = {(SelectedItem: Непрозрачность = 1), (Все невыбранные элементы: Непрозрачность = 0,2)}] -> [Элемент не выбран (SelectedItem == null) = (Opasity = 0.7)]

Спасибо за предложения и идеи!

1 Ответ

2 голосов
/ 04 ноября 2011

Триггер включен: выбор есть и не выбирается сам.

Это должно сделать:

<Style TargetType="ListBoxItem">
    <Setter Property="Opacity" Value="0.7" />
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}"
                        Value="false" />
                <Condition
                        Binding="{Binding SelectedItems.Count, RelativeSource={RelativeSource AncestorType=ListBox}}"
                        Value="1" />
            </MultiDataTrigger.Conditions>
            <Setter Property="Opacity" Value="0.2" />
        </MultiDataTrigger>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Opacity" Value="1" />
        </Trigger>
    </Style.Triggers>
</Style>
...