2017-03-11 70 views
0

我遇到了問題,並嘗試互聯網和線程在這裏找到一個解決方案,但還沒有找到。 我是一個初學者編程的任何幫助將不勝感激。WPF計算FontSize裏面ViewBox

我有一個窗口,它將顯示在輔助屏幕上,並且一個TextBlock包裝在一個視框中,並且文本被綁定,並且將在運行時在第二個屏幕上以文本方式填充。字體大小也是綁定的,可以由用戶更改。

這工作得很好。 問題在於,當用戶將字體大小增加到更高的值時,如果文本很短,文本看起來不錯,但如果文本非常大,則文本看起來很醜,有時變得不可讀。

我已經試過了視框的Sretch方向拉伸,但還沒有找到更好的辦法來解決我的問題,但如果手動存在很大很長的文本和文本是不可讀減少字體大小,使文本的可讀性。

我該怎麼幫忙。我想到的一種解決方案是計算字體大小,可能根據父網格的高度和寬度,這樣當文本很長時,計算就會將字體大小縮小到可讀性的位置。

這裏是我的樣品的XAML

<Grid> 
    <Viewbox Stretch="Fill" 
      StretchDirection="DownOnly"> 
     <TextBlock Text="{Binding}" 
        Width="{Binding}" 
        FontSize="{Binding}" 
        TextWrapping="Wrap"> 

     </TextBlock> 
    </Viewbox> 
</Grid> 

Here is the Ugly Behavior when text is very long and fontsize is set highly

Expected behavior. Here the fontsize is manually set lower

+0

你必須處理最小/最大尺寸,而且還可能基於'FontSize'計算'Width',這可以通過'System.Windows.Media.FormattedText'類來完成。 – AnjumSKhan

+0

感謝您的回覆。會試試這個 – Gnyasha

回答

0

好吧,我找到了解決該問題的工作。如果有人有另一種解決方案,它將受到歡迎。

我包一個邊框內的文本塊和刪除的文字塊的寬度結合並手動將它設置爲1200

<Grid> 
<Viewbox > 
    <Border> 
    <TextBlock Text="{Binding}" 
       Width="{1200}" 
       FontSize="{Binding}" 
       TextWrapping="Wrap"> 

    </TextBlock> 
    </Border> 
</Viewbox>