views:

2735

answers:

4

Hi

I've just started to play with WPF.

Is it possible to have the size of the text of a Label or TextBlock size itself to fill it's parent container?

Thanks, Mark

A: 

Use DockPanel as parent container

<DockPanel>
  <TextBlock />
</DockPanel>
Andrija
A: 

Set HorizonalAlignment/VerticalAlignment to "stretch".

Simon P Stevens
A: 

Depends on the parent container

Grid, DockPanel will stretch your control StackPanel, WrapPanel will leave it to the control to size itself..

Arcturus
+13  A: 

You can use a ViewBox to visually zoom something to fit within its container. The other solutions here work, but they only stretch the control, not its content. The ViewBox will stretch both.

<!-- Big grid, will stretch its children to fill itself -->
<Grid Width="1000" Height="1000">
 <!-- The button is stretched, but its text remains teeny tiny -->
 <Button>
  <!-- The viewbox will stretch its content 
  to fit the final size of the button -->
  <Viewbox
      Margin="4"
      VerticalAlignment="Stretch"
      Height="Auto">
      <!-- The textblock and its contents are 
      stretched to fill its parent -->
      <TextBlock
          Text="Bartenders" />
  </Viewbox>
 </Button>
</Grid>
Will
Thanks Will, I thought it *must* be possible, but I had visions of having to bind the font size property.
Mark
+1 I have run into the same problem, and this solution works great!
Giffyguy