2009-08-20 8 views
18

Je crée une application Windows (WPF) et C#. À mon avis, je dois ajouter quelques dispositions comme la navigation dans un dossier, l'affichage des fichiers dans le dossier dans une vue de liste ... etcComment créer un panneau réductible dans WPF

Mon exigence est: Les panneaux mentionnés ci-dessus devraient être des panneaux pliables, je suppose, nous n'avons pas l'option de panneau pliable dans wpf.

Je dois créer un contrôle personnalisé pour cela? Si oui, veuillez me suggérer comment faire cela?

+7

Vaccano, mauvaise forme. – Kilhoffer

+0

@Vaccano: la réponse a été acceptée, vous devriez supprimer votre downvote maintenant –

Répondre

53

Le contrôle Expander est peut-être ce que vous cherchez. De MSDN:

Classe Expander

Représente le contrôle qui affiche un en-tête qui a une fenêtre pliable qui affiche le contenu.

+0

Merci pour le lien. Mais cela ne ressemble pas à un panneau réductible dans ASP.NET. En fait, je n'utilise pas les contrôles ASP.NET dans ma proj. Mais si je veux ce genre de contrôle dans WPF, comment cela peut-il être réalisé? Pls m'aider Merci Ramm – Ramm

+1

Je ne suis pas sûr de ce que vous voulez dire - Expander * est * un contrôle WPF et semble se comporter comme un panneau pliable. Pouvez-vous s'il vous plaît expliquer quelles fonctionnalités vous manquent? –

5

Peut-être cela?

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

code C# derrière

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

Vous pouvez utiliser un contrôle des éléments comme la grille, pile, quai, frontière ...

+0

Que diriez-vous d'un exemple utilisant VisualStateManager? – avantprime

+0

C'est génial !! Simple, efficace .. Merci! –

Questions connexes