2010-09-26 3 views
6

У меня есть TextBlock, который долженWPF TextBlock масштабирование и оберните

  1. показать текст в максимальном размере шрифта возможно в пределах данного пространства (меньше символов превышает буквы и наоборот)
  2. обернуть текст в данное пространство.

Я попытался использовать текстовое поле внутри окна виджетов, как показано ниже, но текстовая обработка не работает, если я не укажу ширину и высоту текстового блока. Если я задаю ширину и высоту того же размера, что и окно просмотра, то, очевидно, масштабирование не произойдет.

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

Есть ли другой способ добиться этого? Или я должен думать о написании алгоритма для увеличения размера шрифта вручную в зависимости от количества текста? Любая помощь приветствуется.

+0

Вы можете вручную сделать разрыв строки обработки события PreviewKeyDown или PreviewKeyUp и проверить, если был достигнут предел длины текста. Другой способ добиться того же результата: создать собственный конвертер и сделать там разрыв строки. Вы можете передать параметр или использовать поле для указания MaxLength. – 0xbadf00d

ответ

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; 
Смежные вопросы