我有一个列表框,其中包含已定义的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)] - &gt; [ItemSelected = {(SelectedItem:Opacity = 1),(所有未选项:不透明度= 0.2)}] - &gt; [项目取消选择(SelectedItem == null)=(Opasity = 0.7)]
感谢syggestions和ideas!
答案 0 :(得分:2)
触发:选择在那里&amp;&amp;没有被选中。
这应该做:
<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>