2009-02-09 16 views
11

Digamos que tengo un diseño simple como esto:WPF: ¿Cómo hacer que TextBlock vacío no ocupe espacio?

<StackPanel> 
    <TextBlock Text="{Binding Path=Title}" /> 
    <TextBlock Text="{Binding Path=ShortDescription}" /> 
    <TextBlock Text="{Binding Path=LongDescription}" /> 
</StackPanel> 

Ahora cuando tengo shortDescription configurado en nulo o cadena vacía que todavía hay una brecha en lugar de la segunda TextBlock. ¿Hay alguna propiedad para evitar que un bloque de texto vacío ocupe espacio? ¿O debería usar algún otro control?

Gracias.

Respuesta

19

Quiere establecer la visibilidad del cuadro de texto en "Contraído".

La visibilidad puede ser:
Visible - explica por sí misma
Oculto - Invisible pero aún ocupa un espacio
derrumbó - Invisible y no ocupa espacio

Editar: Probablemente debería establecer un desencadenante, como por lo que:

<Trigger Property="Text" Value="{x:Null}"> 
    <Setter Property="Visibility" Value="Collapsed"/> 
</Trigger> 
+1

Esto solo funcionará si el valor es nulo, si desea establecer la visibilidad en una cadena vacía _or_ vacía, querrá usar un convertidor. [Este hilo] (https://stackoverflow.com/questions/5573864/how-to-hide-the-empty-textblock) explica cómo hacerlo. –

9

Es posible que desee probar esto:

<TextBlock.Style> 
    <Style TargetType="{x:Type TextBlock}"> 
     <Style.Triggers> 
      <Trigger Property="Text" Value=""> 
       <Setter Property="Visibility" Value="Collapsed"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</TextBlock.Style> 

Esto debería solucionar el problema de espacio vacío basado en un enlace nulo/vacío.

Cuestiones relacionadas