相关文章推荐
爱健身的鼠标垫  ·  在NPOI ...·  1 年前    · 
无邪的黄花菜  ·  Docker入门_container ...·  1 年前    · 
儒雅的核桃  ·  java socket ...·  1 年前    · 

WPF 入门教程Expander控件

扩展 控制将为您提供的能力,以隐藏/显示一块内容。这通常是一段文本,但由于 WPF 的灵活性,它可以用于任何类型的混合内容,如文本、图像甚至其他 WPF 控件。为了了解我在说什么,这里有一个例子:

请注意箭头部分 - 一旦您单击它,Expander 控件将展开并显示其内容:

它的代码当然非常简单:

<Expander>  
    <TextBlock TextWrapping="Wrap" FontSize="18">  
    Here we can have text which can be hidden/shown using the built-in functionality of the Expander control.  
    </TextBlock>  
</Expander>

默认情况下,扩展器不会展开,因此看起来就像在第一个屏幕截图中一样。用户可以通过单击它来展开它,或者您可以使用 IsExpanded 属性使其最初展开:

<Expander IsExpanded="True">

如果您需要了解 Expander 控件的当前状态,您当然也可以在运行时读取此属性。

进阶内容

扩展器的内容只能是一个控件,就像在我们使用 TextBlock 控件的第一个示例中一样,但没有什么可以阻止您制作它,例如面板,然后它可以容纳任意数量的子控件。这允许您在扩展器中托管丰富的内容,从文本和图像到例如 ListView 或任何其他 WPF 控件。

下面是一个更高级的内容示例,其中我们使用了多个面板、文本和图像,甚至是一个 TextBox 控件:

<Expander Margin="10">
    <StackPanel Margin="10">
    <DockPanel>
        <Image Source="/WpfTutorialSamples;component/Images/question32.png" Width="32" Height="32" DockPanel.Dock="Right" Margin="10"></Image>
        <TextBlock TextWrapping="Wrap" FontSize="18">
            Did you know that WPF is really awesome? Just enter your e-mail address below and we'll send you updates:
        </TextBlock>
    </DockPanel>
    <TextBox Margin="10">john@doe.org</TextBox>
    </StackPanel>
</Expander>

展开方向

默认情况下,Expander 控件将占用其容器控件内的所有可用空间,然后根据 ExpandDirection 属性的值展开,该属性默认设置为 Down 。您可以在上面的屏幕截图中看到这一点,因为箭头位于控件的顶部,它根据控件是否已展开而向上或向下指向。

如果更改 ExpandDirection 属性的值,它将影响 Expander 控件的行为和外观。例如,如果您将值更改为 Right ,则箭头将放置在左侧并指向左/右而不是上/下。下面是一个例子:

<Expander Margin="10" ExpandDirection="Right">
    <TextBlock TextWrapping="Wrap" FontSize="18">
        Here we can have text which can be hidden/shown using the built-in functionality of the Expander control.
    </TextBlock>
</Expander>

您当然也可以将此属性设置为 Up Left - 如果这样做,按钮将放置在底部或右侧。

自定义标题

在到目前为止的所有示例中,Expander 控件几乎没有外观,除了用于显示/隐藏内容的按钮 - 它被绘制为内部带有箭头的圆形按钮。不过,您可以使用 Header 属性轻松自定义控件的标题区域。这是我们使用此属性在按钮旁边添加说明文本的示例:

<Expander Margin="10" Header="Click to show/hide content...">
    <TextBlock TextWrapping="Wrap" FontSize="18">
        Here we can have text which can be hidden/shown using the built-in functionality of the Expander control.
    </TextBlock>
</Expander>

但是您不必满足于一段简单的文本 - Header 属性将允许您向其添加控件,以创建更加自定义的外观:

<Expander Margin="10">
    <Expander.Header>
    <DockPanel VerticalAlignment="Stretch">
        <Image Source="/WpfTutorialSamples;component/Images/bullet_green.png" Height="16" DockPanel.Dock="Left" />
        <TextBlock FontStyle="Italic" Foreground="Green">Click to show/hide content...</TextBlock>