2011-11-03 2 views
1

DataTemplate, Style 및 ItemContainerStyle이 정의 된 목록 상자가 있습니다.ListBox 변경 선택하지 않은 항목의 불투명도가 선택되었을 때

이 목록 상자에는 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" 모든 다른 (선택되지 않은) 항목을 만들 필요가있다.

짧은 : [초기 (Opacity = 0.7)] -> [ItemSelected = {(SelectedItem : 불투명도 = 1), (선택하지 않은 모든 항목 : Opacity = 0.2)}] -> [ItemItelected SelectedItem == null) = (Opasity = 0.7)]

제안과 아이디어에 감사드립니다!

답변

2

트리거 : 거기에있는 선택 & & 자신이 선택되지 않았습니다.

이 수행해야합니다

<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> 
관련 문제