WPF: Как сделать пустой TextBlock, чтобы не занимать пространство? - PullRequest
11 голосов
/ 09 февраля 2009

Допустим, у меня есть простой макет, такой как этот:

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

Теперь, когда для ShortDescription задано значение NULL или пустая строка, на месте второго TextBlock все еще остается пробел. Есть ли какое-либо свойство, чтобы предотвратить занятие пустого текстового блока? Или я должен использовать какой-то другой элемент управления?

Спасибо.

Ответы [ 2 ]

19 голосов
/ 09 февраля 2009

Вы хотите установить видимость текстового поля на «Свернутый».

Видимость может быть либо:
Видимый - Самоочевидный
Скрытый - невидимый, но все еще занимает место
Свернутый - невидимый и не занимает места

Редактировать: Вы, вероятно, должны установить триггер, например так:

<Trigger Property="Text" Value="{x:Null}">
    <Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
9 голосов
/ 29 июля 2011

Вы можете попробовать это:

<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.

...