Как получить точную позицию прокрутки в списке? - PullRequest
4 голосов
/ 10 февраля 2011

Я хотел бы иметь возможность загружать больше данных в список при достижении начала или конца списка.

В моем списке отображаются элементы, связанные с этим временем, когда я достигаю вершины и опускаю вниз, я хотел бы видеть какой-то текст типа «Прокрутите вниз больше, чтобы получить больше элементов», и если вы это сделаете, то запускается загрузка данных для элементов что происходит раньше.

То же самое относится и к нижнему элементу, если вы прокрутите достаточно далеко (под последним элементом он вызывает загрузку данных для элементов позже перечисленных).

Я не за бесшовным списком. Я хочу, чтобы загрузка данных запускалась, только если я прокручиваю вверх или вниз достаточно далеко и отпускаю. Я надеюсь, что это описание имеет смысл.

По сути, мне нужно знать точную позицию прокрутки в списке и, таким образом, я могу определить, когда список перетаскивается и отпускается далеко вниз или вверх. Для тех, у кого есть IPhone, эффект, который мне нужен, используется в приложении Facebook.

Приветствия

/ Jimmy

Ответы [ 2 ]

13 голосов
/ 10 февраля 2011

Чтобы получить точную позицию прокрутки, вы должны получить ее в ScrollViewer в ListBox.Я использую это для Pivots (чтобы вернуть предыдущую позицию прокрутки после захоронения) - я предполагаю, что это будет работать и для ListBoxes ..

var scrollViewer = FindScrollViewer(listBox);
var offset = scrollViewer.VerticalOffset;

static ScrollViewer FindScrollViewer(DependencyObject parent)
{
    var childCount = VisualTreeHelper.GetChildrenCount(parent);
    for (var i = 0; i < childCount; i++)
    {
        var elt = VisualTreeHelper.GetChild(parent, i);
        if (elt is ScrollViewer) return (ScrollViewer)elt;
        var result = FindScrollViewer(elt);
        if (result != null) return result;
    }
    return null;
}
4 голосов
/ 10 февраля 2011

Вы ищете две разные вещи. Во-первых, вам нужно изменить макет по умолчанию ListBox, чтобы иметь конечный элемент управления. Довольно приличная реализация была представлена ​​здесь - вы в основном вставляете дополнительный элемент управления после ItemPresenter в шаблоне по умолчанию.

Ищем динамическую загрузку, вот реализация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...