2011-03-07 13 views
7

Tengo un StackPanel WPF que tiene este aspecto: (algunos atributos retirados que no importa)Cambio de la visibilidad en un StackPanel

<StackPanel HorizontalAlignment="Center" Name="PICStack"> 
     <Label Name="PICName" MouseDoubleClick="PICName_MouseDoubleClick" /> 
     <TextBox Name="PICData" Width="120" Visibility="Hidden" /> 
     <Label Name="PICWeight" /> 
     <Label Name="PICARM" /> 
</StackPanel> 

en cuenta que el cuadro de texto que comienza como "Oculto".

Cuando hago doble clic en la etiqueta superior, que intercambie la visibilidad:

private void PICName_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    this.PICData.Visibility = Visibility.Visible; 
    this.PICName.Visibility = Visibility.Hidden; 
} 

La intención es ocultar la etiqueta, y hacer que el cuadro de texto aparece en su lugar.

Sin embargo, como es un StackPanel, el TextBox ocupa espacio vertical, incluso cuando no está visible. Luego, cuando se revela el TextBox, tiene un espacio en blanco encima, donde la etiqueta ya estaba visible.

¿Hay una buena manera de hacer que los dos elementos estén esencialmente uno encima del otro? de modo que al hacer doble clic en la etiqueta aparece cambiar repentinamente en un cuadro de texto?

Respuesta

21

Use Visibilty.Collapsed en su lugar. No se reserva el espacio en blanco como Visibilty.Hidden.

9

Debería intentar usar Visibility.Collapsed en lugar de Visibility.Hidden.

Cuestiones relacionadas