2010-03-26 6 views

Répondre

26

Vous pouvez définir la visibilité du contenu de la ligne sur "Réduit". Cela ne fonctionnera que si la propriété Height de RowDefinition est définie sur "Auto", donc la taille des lignes dépend de son contenu.

Par exemple,

<Grid> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 

    <Border Grid.Row="0" BorderThickness="1" BorderBrush="Red"><TextBlock>Visible Row</TextBlock></Border> 
    <Border Grid.Row="1" BorderThickness="1" BorderBrush="Black" Visibility="Collapsed"><TextBlock>Hidden Row</TextBlock></Border> 
    <Border Grid.Row="2" BorderThickness="1" BorderBrush="Red"><TextBlock>Visible Row</TextBlock></Border> 
</Grid> 
+0

Exactement ce que je cherchais. Merci. –

+1

Comment feriez-vous si vous avez plusieurs colonnes? Clement n'est pas très pratique pour masquer chaque élément ... –

+1

Clément - Enveloppez chaque élément de la rangée dans un conteneur tel qu'une autre grille, et affichez/cachez/réduisez simplement la visibilité du conteneur. – Kurren

3

En fait, je viens de poser la même question il y a quelques jours, un coup d'oeil ici:

Hide grid row in WPF

réglage Fondamentalement, le RowHeight Auto puis Réglage la Visibilité = "Réduit" cachera la ligne pour vous. Le seul problème que j'avais était les marges, mais c'était mineur. Au moins, la rangée s'est cachée.

+1

Bon point sur les marges, merci. –

1

Il suffit de faire ceci:

XAML:

<Grid.RowDefinitions> 
    <RowDefinition Height="1*" x:Name="name1" /> 
    <RowDefinition Height="Auto" x:Name="name2" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
</Grid.RowDefinitions> 

C# pour l'effondrement:

name1.Height = new GridLength(0); 
name2.Height = new GridLength(0); 

C# pour une meilleure visibilité:

name1.Height = new GridLength(1, GridUnitType.Star); 
name2.Height = GridLength.Auto; 
Questions connexes