2009-08-20 104 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