WPF ListView: автоматическая прокрутка до последнего элемента при поступлении новых сообщений (поведение, подобное чату)C#

Место общения программистов C#
Ответить
Anonymous
 WPF ListView: автоматическая прокрутка до последнего элемента при поступлении новых сообщений (поведение, подобное чату)

Сообщение Anonymous »

Я портирую приложение из MAUI в WPF, это приложение для чата, поэтому я создал этот CollectionView в MAUI, который содержит все сообщения от всех пользователей в одном чате и, как и в реальном приложении чата, расположение сообщений сверху вниз, самое последнее сообщение находится внизу, и я хотел воспроизвести это поведение, используя просто: ItemsUpdatingScrollMode="KeepLastItemInView".
Мне нужен ListView для автоматической прокрутки к последнему сообщению, когда:
  • представление открыто (сообщения уже присутствуют);
  • новое сообщение добавляется, когда пользователь уже находится внизу.
Ожидаемое поведение
Когда открывается окно или когда я нажимаю «Отправить», последнее сообщение должно быть видно (как в обычном чате). Если пользователь прокручивает вверх вручную, автоматическую прокрутку следует отключить до тех пор, пока пользователь не вернется вниз или не отправит новое сообщение.
Фактическое поведение
ListView открывается вверху. Когда я добавляю сообщение, оно может оказаться скрытым под областью ввода, если я не прокручиваю его вручную.
В версии MAUI я просто получаю доступ к чату, в который хочу написать, и он автоматически прокручивается вниз, чтобы показать последнее сообщение, или если пользователь пишет сообщение в поле и нажимает «Отправить», представление автоматически прокручивается вниз и фокусируется на последнем отправленном сообщении.
Дело в том, что теперь мне нужно воспроизвести то же самое в WPF, но, очевидно, в WPF этого нет. тег CollectionView или даже свойство ItemsUpdatingScrollMode для ListView.
Вот что у меня есть в моем XAML: Вопрос

Каков правильный подход WPF для автоматической прокрутки ListView до последнего элемента (например, в чате), аналогично ItemsUpdatingScrollMode="KeepLastItemInView" в MAUI?
Я уже пробовал обрабатывать CollectionChanged и вызывать ScrollIntoView() из кода программной части и из привязанное поведение, но ни один из них не работал надежно. Я ищу идиоматический способ WPF для достижения такого поведения автоматической прокрутки, как в чате.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ike-behavi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»