Force TextBlock для переноса в WPF ListBox

У меня есть список WPF, который отображает сообщения. Он содержит аватар с левой стороны и имя пользователя и сообщение, расположенные вертикально справа от аватара. Макет отлично до тех пор, пока текст сообщения не будет обертываться словами, но вместо этого я получаю горизонтальную полосу прокрутки в списке.

Я искал Google и нашел решения для подобных проблем, но никто из них не работал.

                

Содержимое TextBlock можно обернуть, используя свойство TextWrapping . Вместо StackPanel используйте DockPanel / Grid . Еще одна вещь – установить свойство ScrollViewer.HorizontalScrollBarVisibility значение Disabled для ListBox .

Обновлено Hidden для Disabled на основе комментария от Мэтта. Спасибо Мэтт.

Проблема может быть не в списке ListBox. TextBlock не будет обертываться, если один из родительских элементов управления обеспечивает достаточное пространство, так что ему не нужно обертывать. Это может быть вызвано элементом управления ScrollViewer.

Если вы хотите, чтобы TextBlock не увеличивался, и вы хотите, чтобы он просто соответствовал размеру списка, вы должны явно установить его ширину.

Чтобы динамически изменить его, это означает не значение fix, но вам нужно привязать его к его собственному родительскому элементу в визуальном дереве. У вас может быть что-то вроде этого:

           

Если это не сработает, попробуйте найти нужные элементы (которые должны быть привязаны к чему) с помощью Live Visual Tree в Visual Studio.

  • В чем разница между свойством Property и Dependency Property
  • В каких сценариях замораживание объектов WPF значительно повышает производительность?
  • Как я могу получить WPF EventTrigger в триггере View, если он требует диктует базовую модель Viewmodel?
  • Как включить виртуализацию пользовательского интерфейса в стандартном WPF ListView
  • как захватить символ «#» на разных языковых клавиатурах в WPF / C #?
  • Почему WPF поддерживает привязку к свойствам объекта, но не полям?
  • Индикатор выполнения с динамическим обновлением текста и текста
  • Как динамически добавлять RowDefinition или ColumnDefinition в Grid со связыванием?
  • ItemPropertyChanged не работает на наблюдаемомколлекции.Почему?
  • Dispatcher.CurrentDispatcher vs. Application.Current.Dispatcher
  • Лучший способ скрыть окно от переключателя программ Alt-Tab?
  • Давайте будем гением компьютера.