Мне нужен ListView для автоматической прокрутки к последнему сообщению, когда:
- представление открыто (сообщения уже присутствуют);
- новое сообщение добавляется, когда пользователь уже находится внизу.
Когда открывается окно или когда я нажимаю «Отправить», последнее сообщение должно быть видно (как в обычном чате). Если пользователь прокручивает вверх вручную, автоматическую прокрутку следует отключить до тех пор, пока пользователь не вернется вниз или не отправит новое сообщение.
Фактическое поведение
ListView открывается вверху. Когда я добавляю сообщение, оно может оказаться скрытым под областью ввода, если я не прокручиваю его вручную.
В версии MAUI я просто получаю доступ к чату, в который хочу написать, и он автоматически прокручивается вниз, чтобы показать последнее сообщение, или если пользователь пишет сообщение в поле и нажимает «Отправить», представление автоматически прокручивается вниз и фокусируется на последнем отправленном сообщении.
Дело в том, что теперь мне нужно воспроизвести то же самое в WPF, но, очевидно, в WPF этого нет. тег CollectionView или даже свойство ItemsUpdatingScrollMode для ListView.
Вот что у меня есть в моем XAML:
Код: Выделить всё
Каков правильный подход WPF для автоматической прокрутки ListView до последнего элемента (например, в чате), аналогично ItemsUpdatingScrollMode="KeepLastItemInView" в MAUI?
Я уже пробовал обрабатывать CollectionChanged и вызывать ScrollIntoView() из кода программной части и из привязанное поведение, но ни один из них не работал надежно. Я ищу идиоматический способ WPF для достижения такого поведения автоматической прокрутки, как в чате.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ike-behavi
Мобильная версия