#c# #xaml #windows-phone-8 #listbox #scrollviewer
#c# #xaml #windows-phone-8 #список #scrollviewer
Вопрос:
У меня есть список. И элементами listbox могут быть изображения, текст, аудио, видео и т.д. Элементы извлекаются с помощью Интернета, и иногда список становится слишком длинным. Я хочу реализовать функцию «Перейти к началу» в моем списке, которые используются на многих веб-сайтах. Как только пользователи начинают прокрутку, появляется кнопка, которая выводит их наверх, и если они прокручивают обратно наверх, кнопка исчезает.
Проблема в том, что я не знаю, что делать. Если я отключу scrollviewer моего listbox и помещу listbox в scrollviewer, то я не знаю, какие из событий и свойств scrollviewer мне следует использовать?
Ответ №1:
Вы могли бы использовать событие ScrollStateChanged в RadDataboundListBox, чтобы увидеть, прокручивается ли список. Если это так, вы можете показать свою кнопку scrollToTop.
Что-то вроде этого:
private void RadDataBoundListBox_ScrollStateChanged(object sender, ScrollStateChangedEventArgs e)
{
if (e.NewState == ScrollState.Scrolling)
{
// Code to show the ScrollToTop button
}
}
Вы могли бы поиграть с различными состояниями прокрутки, чтобы показывать и скрывать кнопку scrollToTop в разное время. (т. Е. Когда newState == ScrollState.Верхний предел, вы могли бы скрыть кнопку.)
Если вы привязываетесь к ItemsSource списка, вы можете использовать метод BringIntoView, как упоминалось выше.
RadDataBoundListBox.BringIntoView(BoundObservableCollection[0]);
Я надеюсь, что это поможет.
Спасибо,
Джошуа
Комментарии:
1. Спасибо Джошуа. Но теперь я не использую RadDataBoundListBox, поэтому я найду свой собственный способ (по крайней мере, теперь у меня есть идея его реализации). С уважением, Анаг.
Ответ №2:
Я действительно не уверен, почему вы используете RadDataBoundListBox
(возможно, вам нужна виртуализация), но вот несколько полезных элементов. Весь список можно найти здесь.
TopVisibleItem
: Это свойство возвращает реализованный в данный момент верхний элемент просмотра. Этот элемент можно использовать для поиска индекса, до которого пользователь прокрутил. Итак, если индекс равен, скажем, 25, вы можете захотеть отобразить кнопку «Прокрутка вверх».
BringIntoView
: Этот метод можно использовать при событии нажатия кнопки «Прокрутка вверх». Просто передайте элемент с индексом 0 в качестве параметра.
Надеюсь, это решит проблему.
Комментарии:
1. Спасибо. Но где я должен использовать TopVisibleItem?
2. @Code4A На ум приходит несколько вещей. Прокрутка остановлена. Манипуляция завершена.
3. Извините, но сейчас все немного изменилось. Сначала мне пришлось удалить ScrollViewer. Смотрите это . Во-вторых, нет ничего похожего на определенный индекс, который я мог бы использовать в
TopVisibleItem
. Я думаю, вы можете мне помочь. Но теперь вам нужно досконально разобраться в проблеме. Спасибо