如何在WPF中创建可折叠面板

如何在WPF中创建可折叠面板,wpf,panel,collapsiblepanelextender,Wpf,Panel,Collapsiblepanelextender,我正在创建一个Windows应用程序(WPF)和C#。在我看来,我必须添加一些布局,比如浏览文件夹,在列表视图中显示文件夹中的文件等等 我的要求是: 上面提到的面板应该是可折叠面板,我想,我们在wpf中没有可折叠面板的选项 我必须为此创建自定义控件吗?如果是这样,请建议我如何操作?您可能正在寻找扩展器控件。发件人: 扩展器类 表示显示标题的控件,该标题具有显示内容的可折叠窗口 你喜欢这个吗 <Grid> <Grid.RowDefinitions>

我正在创建一个Windows应用程序(WPF)和C#。在我看来,我必须添加一些布局,比如浏览文件夹,在列表视图中显示文件夹中的文件等等

我的要求是: 上面提到的面板应该是可折叠面板,我想,我们在wpf中没有可折叠面板的选项


我必须为此创建自定义控件吗?如果是这样,请建议我如何操作?

您可能正在寻找扩展器控件。发件人:

扩展器类

表示显示标题的控件,该标题具有显示内容的可折叠窗口

你喜欢这个吗

 <Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="2*"/>
    </Grid.RowDefinitions>
    <Border  Background="Red" Height="12" VerticalAlignment="Top" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave"></Border>
</Grid>    

您可以使用任何元素控件,如网格、堆栈、停靠、边框…

感谢链接。但这看起来不像ASP.NET中的可折叠面板。实际上,我没有在项目中使用ASP.NET控件。但是,如果我想在WPF中实现这种控制,如何实现呢?请帮助我,谢谢,我不知道你的意思-扩展器是一个WPF控制,似乎表现得像一个可折叠的面板。您能解释一下您缺少什么功能吗?Vaccano,糟糕的形式。@Vaccano:答案已被接受,您现在应该删除否决票使用VisualStateManager的示例如何?这太棒了!!简单、有效。。非常感谢。
 private void StackPanel_MouseEnter(object sender, MouseEventArgs e)
    {
        Border sp = sender as Border;
        DoubleAnimation db = new DoubleAnimation();
        //db.From = 12;
        db.To = 150;
        db.Duration = TimeSpan.FromSeconds(0.5);
        db.AutoReverse = false;
        db.RepeatBehavior = new RepeatBehavior(1);
        sp.BeginAnimation(StackPanel.HeightProperty, db);
    }

    private void StackPanel_MouseLeave(object sender, MouseEventArgs e)
    {
        Border sp = sender as Border;
        DoubleAnimation db = new DoubleAnimation();
        //db.From = 12;
        db.To = 12;
        db.Duration = TimeSpan.FromSeconds(0.5);
        db.AutoReverse = false;
        db.RepeatBehavior = new RepeatBehavior(1);
        sp.BeginAnimation(StackPanel.HeightProperty, db);
    }
}