2009-02-09 12 views
11

Lassen Sie uns sagen, dass ich ein einfaches Layout haben wie folgt aus:WPF: Wie leere TextBlock nicht Raum zu besetzen?

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

Nun, wenn ich Kurze inhaltliche Beschreibung eingestellt haben dort auf null oder eine leere Zeichenfolge ist immer noch eine Lücke anstelle der zweiten Textblock. Gibt es eine Eigenschaft, die verhindert, dass ein leerer Textblock Platz belegt? Oder sollte ich eine andere Kontrolle verwenden?

Danke.

Antwort

19

Sie möchten die Sichtbarkeit des Textfelds auf "Collapsed" setzen.

Sichtbarkeit kann entweder:
Visible - Selbsterklärend
Versteckt - Unsichtbare nimmt aber immer noch Raum
Komprimiert - Unsichtbar und nimmt keinen Platz

Edit: Sie sollten wahrscheinlich einen Trigger einrichten, wie so:

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

Dies funktioniert nur, wenn der Wert Null ist, wenn Sie die Sichtbarkeit auf eine leere _oder_ leere Zeichenfolge festlegen möchten, möchten Sie einen Konverter verwenden. [This thread] (https://stackoverflow.com/questions/5573864/how-to-hide-the-empty-textblock) erläutert, wie dies zu tun ist. –

9

Sie möchten kann dies versuchen:

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

Dies sollte das Leerplatzproblem basierend auf einer Null/Leer-Bindung beheben.

Verwandte Themen