10

Ho un TextBlock con una lunga riga di testo che voglio avvolgere. Ho inserito TextBlock all'interno di un ViewBox in attesa che le dimensioni del testo cambino mentre si sta ancora avvolgendo, tuttavia ciò non sembra accadere. Il ViewBox ridimensiona semplicemente il TextBox in modo che tutto il testo si adatti a una riga, rendendo il testo veramente piccolo.Il testo TextBlock non si avvolge quando inserito in un ViewBox

Come è possibile utilizzare il ViewBox per ridimensionare il testo mentre si utilizza TextWrapping.

Ecco il mio codice:

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

Questo fa parte di un Windows 8 applicazione negozio così è WinRT XAML.

+0

potrebbe essere utile [WPF: possiamo fare una linea due nella Viewbox?] (Http: // sociale. msdn.microsoft.com/Forums/vstudio/en-US/9dc8a7e3-e068-44e5-a363-85e8314f075d/wpf-can-we-make-a-two-line-in-the-viewbox) – Xyroid

+0

No, non funziona t lavoro ma grazie per aver provato – Sun

+1

@ il post collegato di Xyroid è corretto, però, devi in ​​qualche modo dare il 'TextBlock' a' MaxWidth' in modo che determini che ha bisogno di 'TextWrap'. Puoi farlo manualmente in XAML oppure puoi fare qualcosa di simile su 'Viewbox'' Loaded', trovare le dimensioni del rendering e impostare 'MaxWidth' di Child' su quello. –

risposta

20

Basta impostare una larghezza su 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

Così il ViewBox sarà lo zoom in/out suoi intero contenuto. Se non si limita il contenuto impostando una larghezza su TextBlock, lo ViewBox gli darà uno spazio infinito in cui espandersi. È inoltre possibile aggiungere una radice Grid con larghezza e altezza all'interno dello ViewBox e posizionare gli elementi in tale posizione, quindi l'intero lotto verrà ingrandito in base alla larghezza dello ViewBox.

Nell'immagine, la larghezza della TextBlock 100 è ingrandito per essere la larghezza del ViewBox quali è 500. Quindi, per ottenere l'involucro che si desidera, basta modificare la larghezza TextBlock fino a che non sembra bello.

(Ovviamente si dovrebbe dire tre linee, ma io non sto re-uploading solo per questo)

+0

OK, funziona ma sto usando il blocco di testo in un DataTemplate, il testo è diverso per ogni elemento, quindi non posso davvero "modificare" la larghezza della casella di testo. – Sun

+0

Certo che puoi. Basta impostare una larghezza che dia l'aspetto giusto per un campione di testo. 'Viewbox' verrà ridimensionato al contenitore dell'elemento modello e' TextBlock' si ridimensionerà con il wrapping. Non so cosa stai cercando di ottenere, ma forse il 'Viewbox' è un'arma rossa. Tiralo fuori. –