2009-02-09 12 views
11

Diciamo che ho un layout semplice come questo:WPF: Come rendere TextBlock vuoto per non occupare spazio?

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

Ora quando devo valore nullo shortDescription o stringa vuota c'è ancora un gap in luogo della seconda TextBlock. Esiste qualche proprietà per impedire che un blocco di testo vuoto occupi spazio? O dovrei usare qualche altro controllo?

Grazie.

risposta

19

Si desidera impostare la visibilità della casella di testo su "Collapsed".

La visibilità può essere:
visibile - Autoesplicativa
nascosti - invisibile, ma vuole ancora spazio
Compresso - Invisibile e non occupa spazio

Edit: Probabilmente si dovrebbe impostare un trigger, come così:

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

Questo funziona solo se il valore è nullo, se si desidera impostare la visibilità su una stringa _or_ vuota vuota, si vorrà utilizzare un convertitore. [Questo thread] (https://stackoverflow.com/questions/5573864/how-to-hide-the-empty-textblock) spiega come farlo. –

9

Si consiglia di provare questo:

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

Questo dovrebbe risolvere il problema dello spazio vuoto basato su un binding Null/Empty.