10

Sarmak istediğim uzun bir metin satırına sahip bir TextBlock var. TextBlock'u, hala sarma yaparken değişecek metin boyutunu bekleyen bir ViewBox'a yerleştirdim, ancak bu gerçekleşmiyor. ViewBox sadece TextBox'u yeniden boyutlandırır, böylece tüm metin tek bir çizgiye sığdırılır, bu da metni gerçekten küçük yapar.TextBlock metni bir ViewBox içine yerleştirildiğinde sarılmıyor

TextWrapping'i kullanırken metni yeniden boyutlandırmak için ViewBox'ı nasıl kullanabilirim.

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

Bu bir Windows 8 mağaza uygulamanın bir parçasıdır bu yüzden WinRT Xaml geçerli:

İşte benim kodudur.

+0

faydalı olabilirdi

(Açıkçası üç çizgi diyebilirim ama yeniden yüklemenizi değilim sadece bunun için) [WPF: Biz ViewBox bir iki satır yapabilir?] (Http: // sosyal. msdn.microsoft.com/Forums/vstudio/en-US/9dc8a7e3-e068-44e5-a363-85e8314f075d/wpf-can-we-make-a-two-line-in-the-viewbox) – Xyroid

+0

Hayır, bu ' t iş ama – Sun

+1

denemek için teşekkürler @ Xyroid bağlı yazı doğru olsa da, bir şekilde 'TextWlock' bir 'MaxWidth' vermek gerekir, böylece 'TextWrap' için gerekli olduğunu belirleyecektir. Bunu el ile XAML'de yapabilir ya da 'Viewbox'' Loaded' gibi bir şey yapabilir, işlenen büyüklüğü bulabilir ve 'Child'' 'MaxWidth' 'i ayarlayabilirsiniz. –

cevap

20

Sadece TextBlock üzerinde bir genişlik ayarlayın.

TextBlock with width 100 in ViewBox with width 500

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

Yani ViewBox/dışına tüm içeriğini yakınlaştırır. İçeriğini TextBlock üzerinde bir genişlik ayarlayarak kısıtlamazsanız, ViewBox, genişletmek için sonsuz boşluk verecektir. Ayrıca Grid kökünü ViewBox içine genişlik ve yükseklik ekleyebilir ve öğelerinizi bu şekilde düzenleyebilirsiniz, daha sonra tüm lot ViewBox genişliğine göre yakınlaştırılacaktır. resimde

, TextBlock 100 genişliği 500. Yani güzel görünüyor kadar sadece TextBlock genişliğini ince ayar, istediğiniz sarma elde etmektir hangi ViewBox genişliği olmak zoomlanır.

+0

Tamam, bu çalışır ancak bir DataTemplate içinde textblock kullanıyorum metin her bir öğe için farklıdır, bu yüzden metin kutusunun genişliğini gerçekten "değiştiremiyorum". – Sun

+0

Elbette yapabilirsin. Sadece bir metin örneği için doğru görünümü veren bir genişlik ayarlayın. 'Viewbox' şablon kalıbı kabına göre boyutlandırılacak ve' TextBlock' sarma ile ölçeklenecektir. Neyi başarmaya çalıştığınızı bilmiyorum ama belki de 'Viewbox' kırmızı-ringa balığı. Çıkar onu. –