WPF ListBox z ListBox - wirtualizacja interfejsu użytkownika i przewijanie

Mój prototyp wyświetla „dokumenty” zawierające „strony” reprezentowane przez miniatury. Każdy dokument może mieć dowolną liczbę stron. Na przykład może być 1000 dokumentów o 5 stronach każda lub 5 dokumentów o 1000 stron każda lub gdzieś pomiędzy nimi. Dokumenty nie zawierają innych dokumentów. W moim znaczniku xaml mamListBox, któregoItemsTemplate odwołuje się do innerItemsTemplate, który ma równieżListBox. Chcę, aby 2 poziomy wybranych elementów były w stanie wykonywać różne operacje na dokumentach lub stronach (usuwanie, scalanie, przenoszenie do nowej lokalizacji itp.). The innerItemsTemplateListBox używa aWrapPanel jakItemsPanelTemplate.

W scenariuszu, w którym mam dużą liczbę dokumentów z kilkoma stronami (powiedzmy 10000 dokumentów po 5 stron każda), przewijanie działa świetnie dzięki wirtualizacji interfejsu użytkownika przezVirtualizingStackPanel. Mam jednak problemy, jeśli mam dużą liczbę stron. Dokument zawierający 1000 stron wyświetla tylko około 50 na raz (cokolwiek pasuje na ekranie), a kiedy przewijam w dół, zewnętrznyListBox przechodzi do następnego dokumentu, pomijając 950 stron, które nie były widoczne. Wraz z tym nie maVirtualzingWrapPanel więc pamięć aplikacji naprawdę wzrasta.

Zastanawiam się, czy zamierzam to zrobić we właściwy sposób, zwłaszcza, że ​​trudno to wyjaśnić! Chciałbym móc wyświetlać 10000 dokumentów po 1000 stron (pokazując tylko to, co pasuje na ekranie), używając wirtualizacji interfejsu użytkownika, a także płynnego przewijania.

Jak mogę się upewnić, że przewijanie będzie się odbywało po wszystkich stronach dokumentu, zanim wyświetli następny dokument, i nadal zachowa wirtualizację interfejsu użytkownika? Pasek przewijania wydaje się przenosić tylko do następnego dokumentu.

Czy logiczne wydaje się reprezentowanie „dokumentów” i „stron” - z moją obecną metodą używaniaListBox w granicachListBox?

Byłbym bardzo wdzięczny za wszelkie pomysły, które masz. Dziękuję Ci.

questionAnswers(5)

yourAnswerToTheQuestion