10

Mam TextBlock z długim wierszem tekstu, który chcę zawinąć. Umieściłem obiekt TextBlock w okienku ViewBox, oczekując zmiany rozmiaru tekstu podczas jego zawijania, jednak wydaje się, że to się nie zdarza. ViewBox zmienia rozmiar okna TextBox tak, aby cały tekst zmieścił się w jednej linii, dzięki czemu tekst był naprawdę mały.Tekst TextBlock nie zawija się po umieszczeniu wewnątrz ViewBox

Jak używać paska ViewBox do zmiany rozmiaru tekstu przy jednoczesnym korzystaniu z funkcji TextWrapping.

Oto mój kod:

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

Jest to część aplikacji Windows 8 sklepu tak jest WinRT Xaml.

+0

mogą być pomocne [WPF: możemy dokonać dwóch linii w ViewBox?] (Http: // społecznego. msdn.microsoft.com/Forums/vstudio/en-US/9dc8a7e3-e068-44e5-a363-85e8314f075d/wpf-can-we-make-a-di-line-in-the-viewbox) – Xyroid

+0

Nie, to nie robi t praca ale dziękuję za próbowanie – Sun

+1

@ Xyroid's link post jest poprawny, musisz jakoś dać 'TextBlock' a' MaxWidth' tak, aby ustalić, że musi "TextWrap". Możesz to zrobić ręcznie w XAML lub możesz zrobić coś takiego na 'Viewbox'' Loaded', dowiedzieć się, jaki jest renderowany rozmiar i ustawić dla niego 'Child''s' MaxWidth'. –

Odpowiedz

20

Po prostu ustaw szerokość na 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

Więc ViewBox będzie powiększyć/pomniejszyć jego całą zawartość. Jeśli nie ograniczysz jego zawartości, ustawiając szerokość na TextBlock, ViewBox da jej nieskończoną przestrzeń do rozwinięcia. Możesz również dodać korzeń Grid o szerokości i wysokości wewnątrz ViewBox i ułożyć w nim swoje elementy, a następnie cała partia zostanie powiększona zgodnie z szerokością ViewBox.

W obrazie, szerokość TextBlock 100 jest powiększony być szerokość ViewBox która wynosi 500. Tak więc, aby uzyskać zawijanie chcesz, po prostu dostosować szerokość TextBlock aż ładnie wygląda.

(Oczywiście należy powiedzieć trzy linie, ale nie jestem ponowne przesłanie tylko do tego)

+0

OK, który działa, ale używam bloku tekstowego w DataTemplate tekst jest inny dla każdego elementu, więc nie mogę naprawdę "poprawić" szerokości pola tekstowego. – Sun

+0

Oczywiście, że możesz. Wystarczy ustawić szerokość, która daje odpowiedni wygląd próbki tekstu. "Viewbox" zostanie zwymiarowany do kontenera elementu szablonu, a "TextBlock" zmieni się wraz z zawijaniem. Nie wiem, co próbujesz osiągnąć, ale może "Viewbox" jest czerwonawym śledziem. Wyjmij to. –