【问题标题】:WPF: How to make empty TextBlock not to occupy space?WPF:如何使空的TextBlock不占用空间?
【发布时间】: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 的位置仍有一个间隙。是否有一些属性可以防止空文本块占用空间?还是应该使用其他控件?

谢谢。

【问题讨论】:

    标签: wpf layout visibility 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 的空白空间问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-04
      • 2017-03-01
      • 1970-01-01
      • 2015-09-01
      • 2015-07-07
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      相关资源
      最近更新 更多