2012-03-15 3 views
3

Я использую Longlistselector для привязки сообщений чата. После привязки мне нужно показать последнее сообщение. Но по умолчанию он подходит к началу сообщения. Я попробовал прокрутить до последнего элемента "(ScrollTo (lastmessage))", но он не работает. может ли кто-нибудь предоставить решение.Перейдите к определенному элементу в селекторе длинного списка после привязки

+1

Возможно, метод AnimateTo() поможет – KrazZ88

+2

ScrollTo() должен работать нормально, но имейте в виду, что он использует метод Equals(), унаследованный от Object, поэтому он, вероятно, проведет сравнение экземпляров над объектами ... вы уверены, что ваш объект lastmessage trully тот же самый экземпляр, который находится в списке? –

ответ

0

Попробуйте установить SelectedItemIndex в индекс последнего элемента.

+0

Выбранный элемент автоматически не отображается при выборе, поэтому это не будет работать. –

+0

Я сказал об индексе, а не о товаре. Когда U изменяет выбранный индекс, он прокручивается к нему. Правильная работа с ListBox –

+1

Deployment.Current.Dispatcher.BeginInvoke (() => { ScrollTo (LastItem); }); нам нужно добавить поток для прокрутки – kishore

1

Вы пробовали использовать AnimateTo() и передали ему последний элемент в списке.

В качестве альтернативы вы можете опросить визуальное дерево элемента управления и получить доступ к ScrollViewer внутреннего [Templated] ListBox и вызвать ScrollToVerticalOffset.

+0

AnimateTo() отмечен как ObsoleteAttribute, так и в исходном коде, можно видеть, что все, что он делает, это вызов метода ScrollTo() –

2

Другие нашли успех, вызвав UpdateLayout() перед ScrollIntoView() в ListBox.

+2

Это работает, я добавил его непосредственно перед ScrollTo (item) и больше никаких исключений, спасибо человеку! –

 Смежные вопросы

  • Нет связанных вопросов^_^