2010-09-26 71 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;