2009-02-09 71 views
11

比方说,我有一个简单的布局像这样:WPF:如何让空的TextBlock不占用空间?

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

现在,当我有SHORTDESCRIPTION设置为空或空字符串有仍然存在第二TextBlock中的差距。是否有一些属性来防止空白文本块占用空间?或者我应该使用其他控件?

谢谢。

回答

19

您希望将文本框的可见性设置为“折叠”。

可见性可以是:
可见 - 自我解释
隐藏 - 隐形,但仍占用空间
折叠 - 无形的,不占用空间

编辑:你或许应该建立一个触发器,像所以:

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

这只有在值为空时才起作用,如果要设置null或空字符串的可见性,则需要使用转换器。 [这个线程](https://stackoverflow.com/questions/5573864/how-to-hide-the-empty-textblock)讨论如何做到这一点。 – 2014-06-30 15:51:03

9

你可以试试这个:

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

这应该修复基于空/空绑定的空白空间问题。