0

我正在使用按类别分组的扩展器,并且希望默认仅扩展某些类别。也就是说,我想在向用户呈现窗口之前扩展一些类别。我只找到了如何默认折叠/展开所有类别。

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

编辑:

xaml 文件的代码片段:

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

DockPanel 可能不是必需的。

4

2 回答 2

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;当元素布局、渲染并准备好交互时发生。

于 2012-06-04T11:46:25.543 回答
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>
于 2012-06-05T07:35:56.747 回答