Мой прототип отображает "документы", содержащие "страницы", которые
представленных миниатюрами. Каждый документ может иметь
любое количество страниц. Например, может быть
1000 документов по 5 страниц каждая или 5 документов на 1000 страниц
каждый, или где-то между ними. Документы не содержат других документов.
В моей разметке xaml у меня есть ListBox
, чья ItemsTemplate
ссылается на innerItemsTemplate, который также имеет ListBox
. Я хочу
2 уровня выбранных элементов, чтобы я мог выполнять различные операции
на документы или страницы (удалить, слить, перейти в новое место и т.д.).
Внутренний элемент ItemsTemplate ListBox
использует WrapPanel
как ItemsPanelTemplate
.
Для сценария, где у меня есть большое количество документов с несколькими
страниц (скажем, 10000 документов по 5 страниц каждый), прокрутка
отлично работает благодаря виртуализации пользовательского интерфейса с помощью VirtualizingStackPanel
.
Однако у меня проблемы, если у меня большое количество страниц. Документ
с 1000 страниц будет отображаться только около 50 за раз (независимо от того, что подходит на экране), а когда я прокручиваю вниз, внешний ListBox
переходит к следующему документу, пропуская 950
страниц или так, чтобы они не были видны. Наряду с этим нет
VirtualzingWrapPanel
, поэтому память приложения действительно увеличивается.
Мне интересно, правильно ли я это сделаю, особенно так как это сложно объяснить! Я хотел бы иметь возможность отображать 10000 документов по 1000 страниц каждый (только показывая все, что подходит на экране), используя виртуализацию пользовательского интерфейса, а также плавную прокрутку.
Как я могу убедиться, что прокрутка перемещается по всем страницам документа прежде чем он отобразит следующий документ и все еще сохранит виртуализацию пользовательского интерфейса? Полоса прокрутки, похоже, перемещается только к следующему документу.
Кажется ли логичным представлять "документы" и "страницы" -
с моим текущим методом использования ListBox
в пределах ListBox
?
Я бы очень признателен за любые ваши идеи. Спасибо.