2009-08-20 103 views
18

我正在创建Windows应用程序(WPF)和C#。在我看来,我不得不添加一些布局,如浏览文件夹,在列表视图中显示文件夹中的文件...等如何在WPF中创建可折叠面板

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

我必须为此创建一个自定义控件?如果是这样,请告诉我如何做到这一点?

+7

Vaccano,不好的形式。 – Kilhoffer 2010-01-22 17:36:24

+0

@Vaccano:答案已被接受,您现在应该删除您的downvote – 2012-09-11 09:19:23

回答

53

Expander控件可能是你正在寻找的。从MSDN

扩展类

表示显示,其具有显示内容的可折叠窗口的报头的控制。

+0

感谢您的链接。 但是,这看起来不像ASP.NET中的可折叠面板。 其实我没有在我的项目中使用ASP.NET控件。但是如果我想在WPF中实现这种控制,那么这怎么实现呢? 请帮助我 感谢 拉姆 – Ramm 2009-08-20 10:26:33

+1

我不知道你的意思 - 扩展*为* WPF控件和它似乎像一个可折叠的面板。你能解释一下你缺少的功能吗? – 2009-08-20 11:36:11

5

可能会喜欢吗?

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

你可以使用任何元素控制像格,堆栈,码头,边境...

+0

如何使用VisualStateManager的例子? – avantprime 2014-07-16 07:33:52

+0

这太棒了!简单,有效..谢谢! – 2014-09-18 16:49:36