- прокручиваться к следующему элементу на странице вниз.
- прокручиваться к следующему элементу по стрелке вниз.
- ничего не делать на пробеле.
Однако это просто не работает, когда контент выше, чем список.
Я хочу иметь дело с каждым элементом переменной высоты.
Я искал способы сделать это:
- сделайте что-нибудь более значимое для страницы вниз (смогу решить, как только узнаю как решить остальные).
- прокрутите «немного» вниз по стрелке вниз. (определение этого см. в стандартном поведении браузера. Загрузите длинную страницу, а затем один раз нажмите стрелку вниз, чтобы увидеть, как она «немного» прокрутится вниз)
- прокрутите «сильно» вниз по пробелу. (для определения этого обратитесь к стандартному поведению браузера. Загрузите длинную страницу, а затем один раз нажмите пробел, чтобы увидеть, как она будет прокручиваться до «следующего видимого раздела»)
Предположим, представление списка (800 пикселей) содержит 5 элементов:
- Элемент 1: 400 пикселей
- Элемент 2: 300 пикселей
- Элемент 3: 1200 пикселей
- Элемент 4: 500 пикселей
- Элемент 5: 500 пикселей
нажмите
текущее поведение
желаемое поведение
страница вниз 1
прокрутка на 400 пикселей вниз
прокрутка на 700 пикселей вниз
страница вниз 2
прокрутка на 300 пикселей вниз
прокрутка на 1200 пикселей вниз
страница вниз 3
прокрутка на 1200 пикселей вниз
прокрутка на 500 пикселей вниз
страница вниз 4
прокрутка на 500 пикселей вниз
прокрутка 200 пикселей вниз
страница вниз 5
прокрутка на 200 пикселей вниз
ничего не делать, уже внизу
стрелка вниз 1
прокрутка на 400 пикселей вниз
прокрутить на 50 пикселей вниз
стрелка вниз 2
прокрутить на 300 пикселей вниз
прокрутить на 50 пикселей вниз
стрелка вниз 3
прокрутить на 1200 пикселей вниз
прокрутить на 50 пикселей вниз
стрелка вниз 4
прокрутить на 500 пикселей вниз
прокрутить на 50 пикселей вниз
стрелка вниз 5
прокрутить 200 пикселей вниз
прокрутить на 50 пикселей вниз
пробел 1
ничего не делать
прокрутить на 750 пикселей вниз
пробел 2
ничего не делать
прокрутить на 750 пикселей вниз
пробел 3
ничего не делать
прокрутить на 600 пикселей вниз
пробел 4
ничего не делать
ничего не делать, уже на внизу
пробел 5
ничего не делать
ничего не делать, уже внизу
Моя проблема в том, что:
- Я не вижу другого метода ListView, кроме ScrollIntoView для управления прокруткой.
- По умолчанию поведение стрелки вниз и вниз по странице похоже на использование ScrollIntoView(CurrentItem + 1).
- Я не могу найти методы, которые:
Определяют текущую позицию прокрутки внутри текущего элемента. - Прокрутка до определенной позиции в текущем элементе.
Гипотетический пример кода, показывающий, чего я хочу достичь:
Код: Выделить всё
// Let's say there were 2 methods:
// - void ScrollIntoView(Object Item, double PosInItem)
// - (Object Item, double PosInItem) CurrentScrollViewPos()
public async void KeyboardAccelerator_DownArrow(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args)
{
var csvp = MyListView.CurrentScrollViewPos();
MyListView.ScrollIntoView(csvp.Left, csvp.Right + config.SmallLeap);
}
public async void KeyboardAccelerator_Space(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args)
{
var csvp = MyListView.CurrentScrollViewPos();
MyListView.ScrollIntoView(csvp.Left, csvp.Right + MyListView.ActualHeight - config.SmallLeap);
}
Или я на неправильном пути?
Я в первую очередь хочу использовать прокрутку списка вместо встраивания представления списка в средство просмотра прокрутки, например:
- При выходе из приложения я хочу сохранить индекс объекта.
- При запуске приложения найдите сохраненные индекс (если он существует) и возобновите работу с этого элемента (используя текущий метод `ScrollIntoView(Object)`.