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

Posted

技术标签:

【中文标题】WPF:如何使空的TextBlock不占用空间?【英文标题】:WPF: How to make empty TextBlock not to occupy space? 【发布时间】:2010-10-06 10:11:25 【问题描述】:

假设我有一个这样的简单布局:

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

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

谢谢。

【问题讨论】:

【参考方案1】:

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

可见性可以是: 可见 - 不言自明 隐藏 - 不可见但仍占用空间 折叠 - 不可见且不占用空间

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

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

【讨论】:

这仅在值为 null 时有效,如果您想设置 null 空字符串的可见性,您将需要使用转换器。 This thread 讨论如何做到这一点。【参考方案2】:

你可能想试试这个:

<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 Binding 的空白空间问题。

【讨论】:

以上是关于WPF:如何使空的TextBlock不占用空间?的主要内容,如果未能解决你的问题,请参考以下文章

清空回收站后没有释放硬盘空间

如何在 IE7 中使空的锚标记可点击?

TextBlock 笔刷颜色不正确

SQL如何在升序排序时使空值排在最后

WPF如何把隐藏控件显示出来

WPF TextBlock 字体调整大小以填充网格中的可用空间