Random Access Data Virtualization für ListView unter Windows Runtime

Ich implementiere eine Liste, die leicht 10.000 kleine Bilder enthalten könnte. Im aktuellen Anwendungsfall wird eine Liste mit Miniaturansichten eines Videos angezeigt, sodass Sie Frame für Frame durch ein Video scrollen können. Ich habe alle 2/3 Sekunde im Video eine Miniaturansicht des Videos in die Liste aufgenommen. Ich muss sehr lange Videos unterstützen (z. B. 1 Std. Video).

So Virtualisierungsoptionen:

http: //msdn.microsoft.com/en-us/library/windows/apps/xaml/hh780657.asp

Ich habe "Inkrementelle Datenvirtualisierung" ausprobiert und das verbraucht zu viel Speicher für mich, da die Bilder nur über Streams referenziert werden können und ich am Ende 10.000 Streams öffnen würde. Dies würde eine Windows Phone-Anwendung aufgrund eines Speichermangels zum Absturz bringen.

Now Ich möchte "Random Access Data Virtualization" ausprobieren. Ich sehe, wie man die Schnittstellen implementiertIObservableVector<object>, INotifyCollectionChanged (Ja<object> b / c<T> funktioniert nicht). Der schwierige Teil ist, wie ich Bilder entsorgen und Bilder laden kann. Das Laden von Bildern ist eine asynchrone Methode.

Zusätzlich sollte diese Lösung Platzhalter enthalten, so wie es im MSFT-Dokument heißt: "Ein Beispiel für diese Art der Datenvirtualisierung wird häufig in Foto-Anzeige-Apps verwendet. Anstatt den Benutzer auf das Herunterladen aller Fotos in einem Album zu warten, zeigt die App Platzhalter an Wenn jedes Bild abgerufen wird, ersetzt die App das Platzhalterelement für dieses Bild durch eine Wiedergabe des tatsächlichen Fotos. Auch wenn nicht alle Bilder heruntergeladen und angezeigt wurden, kann der Benutzer die Sammlung weiterhin verschieben und mit ihr interagieren. "

Schauen Sie sich das MSFT-Beispiel nach Platzhaltern an - die Verwendung von "ContainerContentChanging" scheint ein wichtiger Pfad zu sein. Ich vermute hier, dass es eine Möglichkeit gibt, das Bild innerhalb dieses Ereignisses zu entfernen und das Laden eines Bildes ebenfalls zu starten.https: //code.msdn.microsoft.com/windowsapps/ListViewSimple-d5fc27d

Boiling dies auf eine Frage -Wo kann der Image-Stream entsorgt und das Laden eines Images für eine Virtualisierungsliste mit wahlfreiem Zugriff gestartet werden? Dies ist ein in Foto-Apps sehr verbreitetes Szenario, das in iOS sehr einfach zu bewerkstelligen ist, aber anscheinend hat es noch niemand zur Windows-Laufzeit getan.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage