How to shrink font size in Textblock to fit width

2019-07-24 04:44发布

Here's the deal: I have this line of XAML

<Viewbox Canvas.Left="27" Canvas.Top="479" Width="377" Height="21" Stretch="Fill" 
       StretchDirection="DownOnly" VerticalAlignment="Top" HorizontalAlignment="Left">
  <TextBlock Name="TitleText" TextWrapping="Wrap" TextAlignment="Left" FontSize="14" 
           FontStretch="Normal"  FontStyle="Normal" Foreground="White" Width="377" >some long text here
  </TextBlock>
</Viewbox>

I want the font to scale down to fit the contents height and width. What happens now is that the font scales down, but the Viewbox also scales the content horizontally, making the width of the textbox smaller. Here's an example

Example image

If I set Stretch="Fill" the text will fill the widht, but shrinks only font-size in heigth, making the font look horribly ugly Like this.

Is it possible to shrink the text to fit inside a frame so that it uses the whole width and height of the container?

3条回答
Rolldiameter
2楼-- · 2019-07-24 04:47

You may not set the StretchDirection property of your viewbox to "DownOnly". This setting leads to the effect that the content only gets stretched vertical.

查看更多
我命由我不由天
3楼-- · 2019-07-24 04:48

Here there is a possible solution using a second ViewBox:

<Viewbox Canvas.Left="27" Canvas.Top="479" Width="377" Height="21" Stretch="Fill" 
        StretchDirection="DownOnly" VerticalAlignment="Top" HorizontalAlignment="Left">
   <Viewbox Stretch="Fill" Width="Auto" Height="Auto">
       <TextBlock Name="TitleText" TextWrapping="Wrap" TextAlignment="Left" FontSize="14" 
            FontStretch="Normal"  FontStyle="Normal" Foreground="White" Width="377" >some long  text here
       </TextBlock>
   </Viewbox>
 </Viewbox>
查看更多
戒情不戒烟
4楼-- · 2019-07-24 05:08

Is this what you want?

<Viewbox Stretch="Uniform">
    <TextBlock Name="TitleText" TextWrapping="Wrap" TextAlignment="Left" FontSize="14" 
       FontStretch="Normal"  FontStyle="Normal" Foreground="White" Width="377">
       some long text here
    </TextBlock>
</Viewbox>
查看更多
登录 后发表回答