Расширить список или использовать альтернативу? - PullRequest
3 голосов
/ 22 января 2012

Я создаю какое-то приложение в стиле чата.Listbox заполняется своим ItemSource, который является привязкой к списку.«Сообщение» - это пользовательский класс, содержащий различные свойства.ListBox содержит DataTemplate, который используется для правильного отображения элемента сообщения.

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

Я хотел бы использовать что-то вроде TextBox, но я просто не мог понять, как использовать какой-то видDataTemplate и привязать свойство Text к списку.Конечно, текст должен быть форматируемым.

Что я могу сделать, чтобы решить мою проблему?Я думал о расширении ListBox-Control до Auto-Scrolling, но это не решило бы мою проблему с выделением текста.

Ответы [ 3 ]

2 голосов
/ 24 января 2012

Я нашел решение. Я скопировал ItemTemplate и вставил его в новый ItemsControl -Control. После этого я обернул ScrollViewer вокруг ItemsControl. Я добавил обработчик событий в событие ListChanged. Внутри обработчика событий я вызвал метод ScrollToBottom для ScrollViewer ItemsControl-Wrapping, который разместил Матей Забский. Чтобы решить проблему с выделением текста, я использовал TextBox с измененными конкретными свойствами. Есть ли способ сделать текстовый блок WPF доступным для выбора?

Спасибо, Рейчел и Матей.

1 голос
/ 22 января 2012

Конечно, вы можете использовать DataTemplate и сделать каждый элемент в ListBox текстовым.

Что касается «2. ListBox не выполняет автоматическую прокрутку вниз при добавлении элемента в список.», Вызовите ScrollToBottom в ScrollViewer ListBox (вы можете использовать LogicalTreeHelper чтобы найти).

0 голосов
/ 22 января 2012

Может быть, вам придется переосмыслить и использовать для печати какой-нибудь ReachTextBox плюс TextBox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...