10

Ich habe einen TextBlock mit einer langen Textzeile, die ich umbrechen möchte. Ich habe den TextBlock innerhalb einer ViewBox platziert und erwarte, dass sich die Textgröße während des Umbrechens ändert, dies scheint jedoch nicht zu passieren. Die ViewBox passt die TextBox nur so an, dass der gesamte Text in eine Zeile passt und der Text dadurch sehr klein ist.TextBlock-Text wird nicht umgebrochen, wenn er in einer ViewBox platziert wird

Wie kann ich die ViewBox verwenden, um den Text zu ändern, während TextWrapping weiterhin verwendet wird?

Hier ist mein Code:

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

Dies ist Teil eines Windows 8 Store-Anwendung ist so ist WinRT XAML.

+0

hilfreich sein könnten [WPF: können wir eine zweizeilige im ViewBox machen] (http: // sozial. msdn.microsoft.com/Forums/vstudio/en-US/9dc8a7e3-e068-44e5-a363-85e8314f075d/wpf-can-we-make-a-towe-line-in-the-viewbox) – Xyroid

+0

Nein, das tut nicht ' t arbeiten, aber danke für den Versuch – Sun

+1

@ Xyroids verknüpften Beitrag ist zwar obwohl, müssen Sie irgendwie geben Sie den 'TextBlock' eine' MaxWidth', so dass es bestimmt, dass es zu 'TextWrap' braucht. Sie können dies manuell in XAML tun, oder Sie können etwas wie in 'Viewbox' 'Loaded' machen, die gerenderte Größe herausfinden und die 'MaxWidth' von' Child' darauf einstellen. –

Antwort

20

Setzen Sie einfach eine Breite auf 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

So wird die ViewBox vergrößern den gesamten Inhalt in/out. Wenn Sie den Inhalt nicht einschränken, indem Sie entweder eine Breite für TextBlock festlegen, gibt Ihnen der ViewBox unbegrenzten Platz zum Erweitern. Sie können auch eine Wurzel Grid mit einer Breite und Höhe innerhalb der ViewBox und legen Sie Ihre Elemente in diesem, dann wird die ganze Menge wird entsprechend der Breite der ViewBox gezoomt werden.

Im Bild die Breite der TextBlock 100 hineingezoomt die Breite der ViewBox zu sein, die 500. So ist die Verpackung Sie, die TextBlock Breite nur zwicken wollen zu bekommen, bis es schön aussieht.

(Natürlich sollte es drei Zeilen sagen, aber ich bin wieder Hochladen nicht nur für diese)

+0

OK, das funktioniert, aber ich benutze den Textblock innerhalb einer DataTemplate, der Text ist für jedes Element unterschiedlich, so dass ich die Breite des Textfelds nicht wirklich "optimieren" kann. – Sun

+0

Natürlich können Sie. Stellen Sie einfach eine Breite ein, die das richtige Aussehen für eine Textprobe bietet. Die "Viewbox" wird auf den Vorlagen-Objektcontainer angepasst und der "TextBlock" wird mit dem Wrapping skaliert. Ich weiß nicht, was Sie erreichen wollen, aber vielleicht ist die Viewbox ein Red-Hering. Hol es raus. –

Verwandte Themen