Frage

ich eine ListBox haben, die viele Zeilen von Templat DB Datensätze haben können, einschließlich eines Image, gebunden an einen ObservableCollection<MyItem>. Manchmal könnte die Sammlung Tausende von Artikeln halten.

Die Leistung ist groß, aber das Scrollen ist das Standard jumpy Verhalten. Ich mag es smooth scrolling haben, so dass ich nicht markiert ScrollViewer.CanContentScroll.

Jetzt habe ich glatt Scrollen, aber die Leistung ist horrend: Die Daten werden in einem separaten Thread abgerufen wird, und der Faden endet schnell, aber es dauert 10-20 Sekunden für die Ergebnisse in der ListBox zu zeigen. Ich gehe davon aus, dass dies liegt daran, dass Entfernen des Häkchen ScrollViewer.CanContentScroll den zugrunde liegenden VirtualizingStackPanel zu einem regelmäßigen StackPanel ändert und so wird die gesamte Sammlung Laden, bevor die Ergebnisse angezeigt werden.

Also meine Frage ist: Wie behalte ich die das reibungslose Scrollen ohne das VirtualizingStackPanel Verhalten und Leistung zu opfern

?
War es hilfreich?

Lösung

Wenn Sie deaktivieren CanContentScroll Sie verlieren Virtualisierung . Und die Antwort ist wirklich frustrierend: Vorerst gibt es keine Out-of-the-box-Lösung. (

PS: Dies ist nicht der erste Beitrag hier gefragt, diese Frage .

Andere Tipps

Wenn Sie .NET 4.5 (oder 4.0, wenn Sie bereit sind, ein bisschen zu hacken), dann ist es eine Antwort über .

[Beachten Sie, dass @ Guilluame Kommentar war hier Art und Weise vor dieser Antwort, aber es war nicht besonders sichtbar, wenn nach Antworten Skimming.]

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top