Force TextBlock для переноса в WPF ListBox
У меня есть список WPF, который отображает сообщения. Он содержит аватар с левой стороны и имя пользователя и сообщение, расположенные вертикально справа от аватара. Макет отлично до тех пор, пока текст сообщения не будет обертываться словами, но вместо этого я получаю горизонтальную полосу прокрутки в списке.
Я искал Google и нашел решения для подобных проблем, но никто из них не работал.
- Ошибка WPF: не удается найти управляющий элемент FrameworkElement для целевого элемента
- Применение инсульта к текстовому блоку в WPF
- WPF CommandParameter NULL первый раз, когда вызывается CanExecute
- Связывание в текстовом столбце таблицы данных WPF
- WPF StringFormat на содержании ярлыков
- WPF: Как сделать автоматическое изменение размера canvasа?
- VirtualizationStackPanel + MVVM + множественный выбор
- Как повысить свойства Измененные события в зависимости от свойства?
- Как настроить привязку ширины столбца ColumnDefinition или RowDefinition?
- Как перетащить UserControl внутри canvasа
- Добавить параметр в событие Click Button
- События WPF в ResourceDictionary для ControlTemplate
- как можно включить полосы прокрутки в WPF Datagrid?
Содержимое TextBlock
можно обернуть, используя свойство TextWrapping
. Вместо StackPanel
используйте DockPanel
/ Grid
. Еще одна вещь – установить свойство ScrollViewer.HorizontalScrollBarVisibility
значение Disabled
для ListBox
.
Обновлено Hidden
для Disabled
на основе комментария от Мэтта. Спасибо Мэтт.
Проблема может быть не в списке ListBox. TextBlock не будет обертываться, если один из родительских элементов управления обеспечивает достаточное пространство, так что ему не нужно обертывать. Это может быть вызвано элементом управления ScrollViewer.
Если вы хотите, чтобы TextBlock не увеличивался, и вы хотите, чтобы он просто соответствовал размеру списка, вы должны явно установить его ширину.
Чтобы динамически изменить его, это означает не значение fix, но вам нужно привязать его к его собственному родительскому элементу в визуальном дереве. У вас может быть что-то вроде этого:
Если это не сработает, попробуйте найти нужные элементы (которые должны быть привязаны к чему) с помощью Live Visual Tree в Visual Studio.