仅扩展一个节点

时间:2012-06-04 10:04:57

标签: wpf xaml

我正在使用按类别分组的扩展器,并希望仅将某些类别扩展为默认值。也就是说,我想在为用户呈现窗口之前扩展一些类别。我只是发现默认情况下如何折叠/展开所有类别。

有关如何做到这一点的任何建议吗?

编辑:

xaml文件的代码段:

<Expander IsExpanded="False">
 <Expander.Header>
  <DockPanel>
   <TextBlock Grid.Column="2" Text="{Binding Path=Name}" />
  </DockPanel> 
 </Expander.Header>
</Expander>

可能没有必要使用DockPanel。

2 个答案:

答案 0 :(得分:2)

您可以选择使用Loaded事件展开某些类别。 如果这是你的扩展器:

<Expander Loaded="OnLoad">
   <Expander.Header>
      <TextBlock Text="RightCategory" />
   </Expander.Header>
</Expander>

使用OnLoad方法选择要扩展的扩展器,例如IsExpanded属性和用于控件的Header

void OnLoad(object sender, RoutedEventArgs e)
{
    TextBlock tblock = (sender as Expander).Header as TextBlock;

    if (tblock.Text == "RightCategory")
        (sender as Expander).IsExpanded = true;
}

事实上,Loaded通常是元素初始化序列中引发的最后一个事件。它将始终在Initialized之后提出;当元素布局,渲染并准备好进行交互时发生。

答案 1 :(得分:0)

[假设您有一些数据(在数据上下文中),您决定是否展开或折叠]

你可以使用一种风格:

<Expander ...>
    <Expander.Style>
        <Style TargetType="{x:Type Expander}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ShouldExpand}" Value="True">
                    <Setter Property="IsExpanded" Value="True"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Expander.Style>
</Expander>