WPF中文网

Expander折叠控件

Expander也是一个内容控件,它有一个标题属性和内容属性。我们曾在前面讲解GroupBox时提到过父类HeaderedContentControl(标题内容控件)。所以,感兴趣的小伙伴可以单击其链接前往复习。在这里,我们只关注Expander的基本功能,也就是可折叠。

一、Expander类的定义

public class Expander : HeaderedContentControl
{
    public static readonly DependencyProperty ExpandDirectionProperty;
    public static readonly DependencyProperty IsExpandedProperty;
    public static readonly RoutedEvent ExpandedEvent;
    public static readonly RoutedEvent CollapsedEvent;

    public Expander();

    public ExpandDirection ExpandDirection { get; set; }
    public bool IsExpanded { get; set; }

    public event RoutedEventHandler Expanded;
    public event RoutedEventHandler Collapsed;

    public override void OnApplyTemplate();
    protected virtual void OnCollapsed();
    protected override AutomationPeer OnCreateAutomationPeer();
    protected virtual void OnExpanded();

}

Expander自身只提供了两个属性,分别是ExpandDirection和IsExpanded。

ExpandDirection属性定义了Expander的内容在打开时的方向。它是一个枚举值,分别有Down、Up、Left和Right四个方向,默认方向为Down。

IsExpanded属性用来获取或设置内容窗口是否可见。比如在后端代码中,将这个属性赋值true,意味着展开Expander。

它还有两个事件成员,分别是Expanded和Collapsed,也就是其内容在展开和隐藏时触发。

二、Expander示例

前端代码

<Window x:Class="HelloWorld.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:HelloWorld"
        mc:Ignorable="d" FontSize="14"
        Title="WPF中文网之控件课程 - www.wpfsoft.com" Height="350" Width="500">
    <StackPanel Margin="15">
        <TextBlock Text="控件课程"/>
        <Expander Header="Button控件" 
                  ExpandDirection="Down" 
                  Expanded="Expander_Expanded" 
                  Collapsed="Expander_Collapsed">
            <Grid Background="#FFE5E5E5">
                <TextBlock TextWrapping="Wrap" Padding="10">
                    表示 Windows 按钮控件,该按钮对 Click 事件做出反应。
                    Button类 直接从 System.Windows.Controls.Primitives.ButtonBase 类继承。
                    Button是内容模型ContentControl的子类。ContentControl内容属性为 Content。
                    在用户单击 Button时做出响应的事件叫ButtonBase.Click 。                    
                </TextBlock>
            </Grid>
        </Expander>
        <Expander Header="TextBox控件" ExpandDirection="Left">
            <Grid Background="#FFE5E5E5">
                <TextBlock TextWrapping="Wrap" Padding="10">
                    TextBox控件是WPF的文本输入控件,使用户输入录入系统数据的入口之一。
                    有了此控件,用户可以将数据按照软件的流程录入进去。它允许用户输入一行或多行数据。
                </TextBlock>
            </Grid>
        </Expander>
        <Expander Header="ListBox控件" ExpandDirection="Right">
            <Grid Background="#FFE5E5E5">
                <TextBlock TextWrapping="Wrap" Padding="10">
                    ListBox控件继承自ContentControl类,是一个容器类的控件,
                    向ListBox控件中包含ListBoxItem元素向容器中添加成分,
                    也可以添加其他任意的控件。
                </TextBlock>
            </Grid>
        </Expander>
    </StackPanel>
</Window>

后端代码

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Expander_Expanded(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Expander展开");
        }

        private void Expander_Collapsed(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("Expander隐藏");

        }
    }

当前课程源码下载:(注明:本站所有源代码请按标题搜索)

文件名:036-《Expander折叠控件》-源代码
链接:https://pan.baidu.com/s/1yu-q4tUtl0poLVgmcMfgBA
提取码:wpff

——重庆教主 2023年8月31日

copyright @重庆教主 WPF中文网 联系站长:(QQ)23611316 (微信)movieclip (QQ群).NET小白课堂:864486030 | 本文由WPF中文网原创发布,谢绝转载 渝ICP备2023009518号-1