Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF: How to make empty TextBlock not to occupy space?

Let's say that I have a simple layout such as this:

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

Now when I have ShortDescription set to null or empty string there's still a gap in place of second TextBlock. Is there some property to prevent an empty textblock from occupying space? Or should I use some other control?

Thanks.

like image 816
Alan Mendelevich Avatar asked Feb 09 '09 15:02

Alan Mendelevich


People also ask

How many UI containers are available with WPF?

User Interface Panels. There are six panel classes available in UI scenarios: Canvas, DockPanel, Grid, StackPanel, VirtualizingStackPanel, and WrapPanel.


2 Answers

You want to set the visibility of the textbox to "Collapsed".

Visibility can be either:
Visible - Self explanatory
Hidden - Invisible but still takes up space
Collapsed - Invisible and takes up no space

Edit: You should probably set up a trigger, like so:

<Trigger Property="Text" Value="{x:Null}">
    <Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
like image 122
DavidN Avatar answered Oct 02 '22 12:10

DavidN


You may want to try this:

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

This should fix the empty space issue based on a Null / Empty Binding.

like image 24
Pierce Avatar answered Oct 02 '22 14:10

Pierce