2009-08-20 13 views
18

Tworzę aplikację Windows (WPF) i C#. Moim zdaniem, muszę dodać kilka układów, takich jak przeglądanie folderu, wyświetlanie plików w folderze w widoku listy ... itd.Tworzenie panelu zwijanego w WPF

Moje wymagania to: Wymienione panele powinny być składanymi panelami, jak sądzę, nie mamy opcji zwijanego panelu w wpf.

Muszę utworzyć niestandardową kontrolę dla tego? Jeśli tak, proszę zasugerować, jak to zrobić?

+7

Vaccano, zła forma. – Kilhoffer

+0

@Vaccano: odpowiedź została przyjęta, powinieneś usunąć swoją wersję teraz –

Odpowiedz

53

Kontrolka rozszerzenia może być tym, czego szukasz. Od MSDN:

Expander klasy

Reprezentuje kontrolkę, która wyświetla nagłówek, który ma składany okno, które wyświetla zawartość.

+0

Dzięki za link. Ale to nie wygląda na zwijany panel w ASP.NET. Aktualnie nie używam formantów ASP.NET w moim programie. Ale jeśli chcę tego rodzaju kontroli w WPF, w jaki sposób można to osiągnąć? Pls mi pomóc Dzięki Ramm – Ramm

+1

Nie jestem pewien, co masz na myśli - Expander * jest * kontrola WPF i zachowuje się jak składany panel. Czy możesz wyjaśnić, jakiej funkcji brakuje? –

5

Może tak jest?

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

kod C# za

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

Można stosować dowolny element sterujący jak siatki, stos, dok, granicy ...

+0

Co powiesz na przykład przy użyciu VisualStateManager? – avantprime

+0

To jest świetne !! Prosty, skuteczny .. Dziękujemy! –

Powiązane problemy