UWP: объединение средств просмотра прокрутки с помощью ISupportIncrementalLoading

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

Пример

Элемент управления комментариями — это отдельный пользовательский элемент управления, в котором элемент управления ListView находится в сводном элементе управления. У меня есть свойство зависимости для ScrollViewer, которое я использую с x:bind для извлечения из визуального дерева страницы.

Есть ли способ заставить эти просмотрщики прокрутки действовать как один? С одной полосой прокрутки и прокруткой страницы, вызывающей постепенную загрузку ItemSource?

Я использую коллекцию IncrementalLoadingCollection из набора инструментов сообщества UWP в качестве объекта ISupportIncrementalLoading.


person William Bradley    schedule 15.04.2017    source источник
comment
Итак, просто чтобы убедиться, что я понимаю, вы пытаетесь вызвать виртуализацию в ListView (комментариях) из прокрутки родительского ScrollViewer за его место в VerticalOffset?   -  person Chris W.    schedule 18.04.2017
comment
Да, по сути, хотелось бы, чтобы при прокрутке родительского ScrollViewer раскрывалось больше ListView (как если бы Scrollviewer был только один), и при этом происходила виртуализация по мере прокрутки. Если вы удалите MaxHeight, который я установил в сетке, которую я установил внутри элемента управления Pivot, где находится ListView, он действует как один просмотрщик прокрутки, за исключением того, что он загружает весь список элементов сразу (победив точку ISupportIncrementialLoading).   -  person William Bradley    schedule 19.04.2017
comment
IMO не используйте поворотный элемент управления, так как он сильно вас ограничивает. Делайте то, что приложение Twitter делает с профилем пользователя.   -  person Quincy    schedule 02.06.2017
comment
@Quincy Похоже, они не используют Pivot, но имеют список, который переключает источник? Что-то подобное?   -  person William Bradley    schedule 10.06.2017
comment
Ага. Это список. У них есть все, что выше твитов, внутри заголовка списка. Тогда элементы списка — это твиты.   -  person Quincy    schedule 10.06.2017


Ответы (1)


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

также UWP имеет x:DeferLoadStrategy="Lazy"

Уменьшите количество элементов при запуске, объявите элементы (или контейнеры), производные от UIElement, которые вы не хотите отображать.

другие способы реализации элемента FindName() GetTemplatedChild() (для ControlTemplate) Storyboard & VisualStates (из-за FindName)

конечно, это не бесплатно, создается легкий прокси-элемент, события подключаются после реализации, привязка завершается после реализации (включая x: Bind)

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

Надеюсь мой ответ вам поможет!!

person Enrique A. Pinelo Novelo    schedule 19.04.2017
comment
Мой Listview содержит элементы UserControl, поэтому x:Phase не так уж полезен. Я хочу использовать ISupportIncremential Loading, так как это позволяет мне собирать больше комментариев с сервера при прокрутке. Единственная причина, по которой я использую x:bind для основного средства просмотра прокрутки, заключается в том, что я могу использовать его в логике, содержащейся в пользовательском элементе управления CommentControl. Где бы я проверял события прокрутки (но я не знаю, как заставить его динамически изменять размер с помощью Inertia). - person William Bradley; 19.04.2017