Я использую Longlistselector для привязки сообщений чата. После привязки мне нужно показать последнее сообщение. Но по умолчанию он подходит к началу сообщения. Я попробовал прокрутить до последнего элемента "(ScrollTo (lastmessage))", но он не работает. может ли кто-нибудь предоставить решение.Перейдите к определенному элементу в селекторе длинного списка после привязки
ответ
Попробуйте установить SelectedItemIndex в индекс последнего элемента.
Выбранный элемент автоматически не отображается при выборе, поэтому это не будет работать. –
Я сказал об индексе, а не о товаре. Когда U изменяет выбранный индекс, он прокручивается к нему. Правильная работа с ListBox –
Deployment.Current.Dispatcher.BeginInvoke (() => { ScrollTo (LastItem); }); нам нужно добавить поток для прокрутки – kishore
Вы пробовали использовать AnimateTo()
и передали ему последний элемент в списке.
В качестве альтернативы вы можете опросить визуальное дерево элемента управления и получить доступ к ScrollViewer внутреннего [Templated] ListBox и вызвать ScrollToVerticalOffset
.
AnimateTo() отмечен как ObsoleteAttribute, так и в исходном коде, можно видеть, что все, что он делает, это вызов метода ScrollTo() –
Другие нашли успех, вызвав UpdateLayout() перед ScrollIntoView() в ListBox.
Это работает, я добавил его непосредственно перед ScrollTo (item) и больше никаких исключений, спасибо человеку! –
Возможно, метод AnimateTo() поможет – KrazZ88
ScrollTo() должен работать нормально, но имейте в виду, что он использует метод Equals(), унаследованный от Object, поэтому он, вероятно, проведет сравнение экземпляров над объектами ... вы уверены, что ваш объект lastmessage trully тот же самый экземпляр, который находится в списке? –