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

29

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

我的要求是: 上述面板应该是可折叠的面板,我猜想在 WPF 中没有可折叠面板的选项。

我需要为此创建一个自定义控件吗?如果需要,请告诉我如何操作?


7
疫苗接种,是错误的做法。 - Kilhoffer
@Vaccano:答案已被采纳,您现在应该取消您的踩票。 - Steve B
2个回答

71

Expander控件可能是您要找的。来自MSDN:

Expander类

表示显示一个可折叠窗口的标题的控件,该窗口显示内容。


谢谢提供链接。 但是这不像是ASP.NET中的可折叠面板。 实际上我在我的项目中没有使用ASP.NET控件。但是如果我想在WPF中使用那种控件,应该如何实现呢? 请帮帮我。 谢谢。 Ramm - user301016
3
我不确定你的意思 - Expander 一个 WPF 控件,看起来像可折叠面板。你能解释一下你缺少什么功能吗? - Bojan Resnik

10

这样可以吗?

 <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>    

C#代码后台

 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);
    }
}

你可以使用任何元素控件,例如网格、堆栈、停靠和边框等...


使用VisualStateManager的示例怎么样? - Observer
太棒了!简单、有效..谢谢! - Nick H.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接