Forza TextBlock per avvolgere in ListBox WPF

Ho una casella di riepilogo WPF che visualizza i messaggi. Contiene un avatar sul lato sinistro e il nome utente e il messaggio impilati verticalmente a destra dell’avatar. Il layout va bene fino a quando il testo del messaggio non è a capo, ma invece ho una barra di scorrimento orizzontale nella casella di riepilogo.

Ho cercato su Google e trovato soluzioni a problemi simili, ma nessuno di loro ha funzionato.

                

Il contenuto di TextBlock può essere spostato utilizzando la proprietà TextWrapping . Invece di StackPanel , usa DockPanel / Grid . Un’altra cosa: imposta la proprietà ScrollViewer.HorizontalScrollBarVisibility sul valore Disabled per il ListBox .

Aggiornato da Hidden a Disabled base al commento di Matt. Grazie Matt.

Il problema potrebbe non trovarsi nel ListBox. TextBlock non si avvolgerà, se uno dei controlli padre fornisce abbastanza spazio, in modo che non abbia la necessità di avvolgere. Ciò potrebbe essere causato da un controllo ScrollViewer.

Se vuoi impedire a TextBlock di crescere e vuoi che si adatti solo alle dimensioni della listbox, devi impostarne la larghezza in modo esplicito.

Per cambiarlo in modo dinamico, significa non un valore di correzione, ma è necessario associarlo al proprio elemento padre nell’albero visivo. Puoi avere qualcosa di simile a questo:

           

Se non funziona, prova a trovare gli elementi corretti (che devono essere associati a cosa) con la Struttura visiva live in Visual Studio.