0

我有一个带有 的用户控件LlistBox,它有一个ItemsSource带有 Collectionview 的用户控件。为了分组,我使用了分组样式,分组项目将在Expander控件内,如下所示。

我希望标签内容Exapander“未知”的默认情况下必须关闭,其余部分应保持打开状态,所以我尝试了两种方法,但都没有奏效,

  1. 在 Controltemplate.Triggers 中使用数据触发器
  2. 在 Controltemplate.Resources 中使用数据触发器

由于扩展器计数因组而异,是否可以使用快捷键打开和关闭扩展器?

例如:如果我有两个扩展器(动物/鸟类),使用Alt+F1我需要关闭或打开“扩展器动物”

使用Alt+F2我需要关闭或打开“Exapnder Birds”

<GroupStyle.ContainerStyle>
    <Style TargetType="{x:Type GroupItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type GroupItem}">




                    <ControlTemplate.Triggers>
                        <DataTrigger Binding="{Binding ElementName=lbl, Path=Content}" Value="UNKNOWN">
                            <Setter Property="Expander.IsExpanded" Value="False" />
                        </DataTrigger>
                    </ControlTemplate.Triggers>



                    <ControlTemplate.Resources>
                        <Style TargetType="{x:Type Expander}">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding ElementName=lbl, Path=Content}" Value="UNKNOWN">
                                    <Setter Property="Expander.IsExpanded" Value="False" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                   </ControlTemplate.Resources>



                   <Expander IsExpanded="True" FlowDirection="LeftToRight"    >
                       <Expander.Header >
                           <Label x:Name="lbl"  BorderBrush="Black"  BorderThickness="0.5"  
                                  Content="{Binding Path = Name}"  Width="{Binding ElementName=MyList, Path=ActualWidth}"
                                  FontSize="16" FontFamily="Verdana"/>
                        </Expander.Header>                                   
                        <Expander.Content>
                            <ItemsPresenter />
                        </Expander.Content>
                    </Expander>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</GroupStyle.ContainerStyle>
4

1 回答 1

1

像这样修改您的 Datatrigger:

<ControlTemplate.Triggers>
   <DataTrigger Binding="{Binding ElementName=lbl, Path=Content}" Value="UNKNOWN">
      <Setter TargetName="exp" Property="IsExpanded" Value="False" />
   </DataTrigger>
</ControlTemplate.Triggers>

并命名扩展器:

<Expander x:Name="exp" IsExpanded="True" FlowDirection="LeftToRight">
...

注意:扩展器必须在触发器之前定义:

<ControlTemplate TargetType="{x:Type GroupItem}">    
   <Expander ...
   <ControlTemplate.Triggers> ...
</ControlTemplate>
于 2013-07-12T07:22:37.863 回答