1

I have a list box with defined DataTemplate, Style and ItemContainerStyle.

This list box have SelectionMode="Single".

Initially all Items have Opacity="0.7", when Item selected I make it 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> 

But I also need make all other (unselected) items with Opacity="0.2" until Selected item will be unselected.

In short: [Initial (Opacity=0.7)]->[ItemSelected = {(SelectedItem:Opacity=1), (All Unselected items: Opacity=0.2)}]->[Item Deselected (SelectedItem==null) =(Opasity=0.7)]

Thanks for syggestions and ideas!

1 Answer 1

2

Trigger on: Selection being there && not being selected oneself.

This should do:

<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> 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.