【问题标题】:WPF Textblock zoom and wrapWPF 文本块缩放和换行
【发布时间】:2019-04-19 23:53:43
【问题描述】:

我有一个文本块需要

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

我尝试在如下视图框中使用文本框,但如果我不指定文本块的宽度和高度,则文本换行不起作用。如果我确实将宽度和高度指定为与视图框相同的大小,则显然不会发生缩放。

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

还有其他方法可以实现吗?或者我应该考虑编写一个算法来根据文本量手动增加字体大小? 任何帮助表示赞赏。

【问题讨论】:

  • 您可以通过处理 PreviewKeyDown 或 PreviewKeyUp 事件手动进行换行,并检查是否达到了文本的长度限制。实现相同结果的另一种方法:创建一个自定义转换器并在那里进行换行。您可以传递参数或使用字段来指定 MaxLength。

标签: wpf zooming textblock word-wrap


【解决方案1】:

试试这个代码。

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2019-11-20
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    相关资源
    最近更新 更多