2010-03-26 13 views

Respuesta

26

Puede establecer la visibilidad del contenido de la fila en "Colapsado". Esto solo funcionará si la propiedad Height de RowDefinition está establecida en "Auto", por lo que los tamaños de fila se basan en su contenido.

Por ejemplo,

<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

Exactamente lo que estaba buscando. Gracias. –

+1

¿Cómo harías si tienes varias columnas? No es muy práctico ocultar cada elemento ... –

+1

Clemente- Envuelva cada elemento de la fila en un contenedor como otra cuadrícula, y simplemente muestre/oculte/contraiga la visibilidad del contenedor. – Kurren

3

realidad, yo sólo hice la misma pregunta hace un par de días, echar un vistazo aquí:

Hide grid row in WPF

establecer Básicamente, el RowHeight en Auto y Ajuste la visibilidad = "colapsado" ocultará la fila por usted. El único problema que tuve fueron los márgenes, pero eso fue menor. Al menos la fila se escondió.

+1

Buen punto sobre los márgenes, gracias. –

1

a hacer esto:

XAML:

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

C# para el colapso:

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

C# para la visibilidad:

name1.Height = new GridLength(1, GridUnitType.Star); 
name2.Height = GridLength.Auto; 
Cuestiones relacionadas