WPF文本块缩放和换行

6

我有一个文本块需要实现以下两点:

  1. 在给定的空间内以最大字体显示文字(字符越少,字母越大;反之亦然)
  2. 在给定的空间内自动换行。

我尝试使用以下代码中的viewbox将文本框包含起来,但是如果不指定文本块的宽度和高度,文本就无法自动换行。如果我将宽度和高度指定为与viewbox相同的大小,显然缩放就不会发生。

<Viewbox Stretch="Fill" Width="100" Height="100">
<TextBlock TextWrapping="Wrap"/>
</Viewbox>

有其他方法可以实现这个吗?还是我需要考虑编写一个算法,根据文本的数量手动增加字体大小?任何帮助都将不胜感激。


你可以通过处理PreviewKeyDown或PreviewKeyUp事件并检查文本长度是否达到限制来手动进行换行。另一种实现相同效果的方法是:创建自定义转换器并在其中进行换行。你可以传递参数或使用字段来指定MaxLength。 - 0xbadf00d
1个回答

0

试一下这段代码。

XAML:

<TextBlock x:Name="textBlock"
           Text="Something text"
           TextWrapping="Wrap"
           FontSize="1"
           Width="100"
           Opacity="0" />

代码后台:

while (textBlock.ActualHeight <= 100)
{
    textBlock.FontSize += 0.1;
    textBlock.UpdateLayout();
}
textBlock.FontSize -= 0.1;
textBlock.Opacity = 1;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接