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