WPF:如何使空的TextBlock不占用空间?

11

假设我有一个简单的布局,如下所示:

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

现在当我将ShortDescription设置为null或空字符串时,第二个TextBlock仍然存在间隙。是否有某个属性可以防止空的textblock占用空间?还是我应该使用其他控件?

谢谢。

2个回答

20

你希望将文本框的可见性设置为“Collapsed”。

可见性可以是以下之一:
Visible - 自我说明
Hidden - 不可见但仍占据空间
Collapsed - 不可见且不占据空间

编辑:你应该设置一个触发器,如下所示:

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

1
只有当值为null时,此方法才有效。如果您想在null或空字符串上设置可见性,则需要使用转换器。此线程讨论了如何实现这一点。 - navigator_

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>

这应该可以解决基于Null / Empty绑定的空白问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接