【问题标题】:ListBox change Opacity of unselected items when one is selected列表框在选中一项时更改未选中项的不透明度
【发布时间】:2011-12-21 13:52:42
【问题描述】:

我有一个定义了 DataTemplate、Style 和 ItemContainerStyle 的列表框。

此列表框有 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> 

但我还需要使用Opacity="0.2" 制作所有其他(未选择的)项目,直到选择的项目将被取消选择。

简而言之:[Initial (Opacity=0.7)]->[ItemSelected = {(SelectedItem:Opacity=1), (All Unselected items: Opacity=0.2)}]->[Item Deselected (SelectedItem==null) =(不透明度=0.7)]

感谢您的意见和想法!

【问题讨论】:

    标签: wpf xaml triggers listbox styles


    【解决方案1】:

    触发:选择存在 && 自己没有被选择。

    应该这样做:

    <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>
    

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2018-04-01
      • 2015-03-07
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多