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

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