2010-09-26 72 views
6

我有给定的间隔(较少字符更大字母,反之亦然)内需要WPF正文块变焦和包裹

  1. 显示文本中的最大字体大小可能一个正文块
  2. 内自动换行给定的空间。

我试过在下面的viewbox里面使用一个文本框,但是如果我没有指定textblock的宽度和高度,文本环绕不起作用。如果我确实将宽度和高度指定为与视框相同的大小,则显然不会发生缩放。

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

有没有其他办法可以实现这个目标?或者我应该考虑编写一种基于文本量手动增加字体大小的算法? 任何帮助表示赞赏。

+0

你可以手动处理PreviewKeyDown或PreviewKeyUp事件做了换行,并检查您的文本的长度限制达到。达到相同结果的另一种方法是:创建一个自定义转换器并在那里执行换行。您可以传递参数或使用字段来指定MaxLength。 – 0xbadf00d 2011-05-26 10:12:52

回答

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;