10

我有一個TextBlock,其中包含一長行文本。我已經將TextBlock放置在ViewBox中,希望文本大小在仍然包裝時發生變化,但是這似乎不會發生。 ViewBox只是調整TextBox的大小,以便所有文本都放在一行中,使文本變得非常小。放置在ViewBox中時TextBlock文本不會換行

如何在仍使用TextWrapping的同時使用ViewBox調整文本大小。

這裏是我的代碼:

<Viewbox> 
    <TextBlock Text="The Option text can also dynamically grow/shrink to fit more content. More text to go here....................." TextWrapping="Wrap"/> 
</Viewbox> 

這是Windows 8商店應用程序的一部分,所以是WinRT中的XAML。

+0

可能會有所幫助[WPF:我們可以在視框兩行?](HTTP://社會。 msdn.microsoft.com/Forums/vstudio/en-US/9dc8a7e3-e068-44e5-a363-85e8314f075d/wpf-can-we-make-a-two-line-in-the-viewbox) – Xyroid

+0

不,沒有, t工作,但謝謝嘗試 – Sun

+1

@ Xyroid的鏈接帖子是正確的,但你需要以某種方式給TextBlock一個MaxWidth,以便它確定它需要'TextWrap'。您可以在XAML中手動執行此操作,或者您可以在'Viewbox'' Loaded'上執行一些操作,查找渲染大小並將Child的'MaxWidth'設置爲此。 –

回答

20

只需在TextBlock上設置寬度即可。

 <Viewbox Width="500"> 
      <TextBlock Width="100" TextWrapping="Wrap">This is the text that's long and on two lines.</TextBlock> 
     </Viewbox> 

TextBlock with width 100 in ViewBox with width 500

所以ViewBox將放大/縮小其全部內容。如果您不通過在TextBlock上設置寬度來限制其內容,那麼ViewBox將給它無限的空間擴展。您也可以在ViewBox內添加一個寬度和高度爲Grid的根,然後將其中的元素放在其中,然後根據ViewBox的寬度將整個區域放大。

在圖像中,的TextBlock 100的寬度被放大成爲ViewBox的寬度是500。因此,爲了得到你想要的包裝,僅僅調整了TextBlock寬度,直到它看起來不錯。

(很顯然,這應該說是三條線,但我不重新上傳只是爲)

+0

好吧,這有效,但我使用DataTemplate內的文本塊,每個項目的文本不同,所以我不能真正「調整」文本框的寬度。 – Sun

+0

當然可以。只需設置一個寬度,即可爲文本樣本提供正確的外觀。 'Viewbox'將根據模板項容器大小進行調整,'TextBlock'將隨着換行而縮放。我不知道你想達到什麼,但是'Viewbox'可能是一個紅鯡魚。把它拿出來。 –

相關問題