Ich habe eine WPF ListBox Steuerelement (view code) und ich halte vielleicht wie 100-200 Elemente drin. Jedes Mal, wenn die ObservableCollection an Änderungen gebunden ist, dauert es nur Sekundenbruchteile, um sie zu aktualisieren, und die gesamte Benutzeroberfläche wird eingefroren. Gibt es eine Möglichkeit, Elemente inkrementell hinzuzufügen, oder etwas, das ich tun kann, um die Leistung dieses Steuerelements zu verbessern?Wie kann ich das Rendern meiner WPF-ListBox beschleunigen?
Antwort
Versuchen Sie, VirtualizingStackPanel.IsVirtualizing = "True" auf Ihrer ListBox - MSDN Documentation. Siehe auch diese blog post Ich stieß auf. Ich habe es nicht persönlich versucht, aber es scheint ein guter Anfang zu sein. Viel Glück!
Versuchen Sie etwas where (PanelList ist eine ListBox oder etwas);
new Task(delegate {
foreach (var info in new DirectoryInfo("C:\\windows\\system32").EnumerateFiles()) {
PanelList.Dispatcher.Invoke(DispatcherPriority.Background, (Action)delegate {
PanelList.Items.Add(info);
});
Thread.Sleep(0);
}
}).Start();
Sie mögen eine Hintergrundtask ausgeführt und eine UI-Steuerung schrittweise durch Dispatcher.Invoke aktualisieren, stellen Sie sicher, dass Ihre Priorität relativly niedrig setzen, und ich werfe immer einen Schlaf in nur zum Spaß (voluntarially Kontext swap), Außerdem sollten Sie überprüfen, ob Ihre aktuelle Aufgabe abgebrochen wurde ...
Oh ya, das ist nicht so sehr eine Leistungsverbesserung als die zuvor erreichte Leistung und Reaktionsfähigkeit der Benutzeroberfläche.
- 1. Wie kann ich das Rendern einer 3D-Szene rendern?
- 2. Git kann ich das Commit beschleunigen?
- 3. Wie kann ich das Lesen aus einer kleinen Tabelle beschleunigen?
- 4. Kann ich diese Jquery beschleunigen?
- 5. Wie kann ich row_number in Oracle beschleunigen?
- 6. Wie kann ich meine App beschleunigen?
- 7. Wie kann ich meine A * Pathfinding beschleunigen?
- 8. Wie kann ich Scriptautous Autocompletion beschleunigen?
- 9. Kann Cython das Array der Objektiteration beschleunigen?
- 10. Wie kann ich die Leistung der ersten Ausführung meiner .NET App beschleunigen?
- 11. Wie entsperre ich das Rendern meiner Webseite, wenn eine externe Ressource nicht in Firefox geladen wird?
- 12. Wie kann ich das vertikale Scrollen auf meiner Seite stoppen?
- 13. Wie kann ich das führende Komma in meiner Zeichenfolge schneiden
- 14. Wie kann ich das Zusammenführen meiner SSRS-Berichtspalten verhindern?
- 15. Wie kann ich auf eine Cubemap rendern?
- 16. Wie erhalte ich das Optionsmenü meiner Aktivität?
- 17. kann ich den Iterationsprozess in R beschleunigen?
- 18. Wie verhindere ich das Kollabieren meiner Treeview?
- 19. Responsive CSS: Kann ich das Rendern von Alt-Text erzwingen?
- 20. Kann ich das Rendern einer Ansicht in asp.net beenden. Mvc
- 21. Wie kann ich diese Abfrage mit einer Alias-Spalte beschleunigen?
- 22. Wie kann ich ngFor für ein großes Array beschleunigen?
- 23. Wie kann ich den Emacs DocView-Modus beschleunigen?
- 24. Wie kann ich diese SELECT CONCAT/GROUP BY-Abfrage beschleunigen?
- 25. Wie kann ich die Installation von Composern beschleunigen?
- 26. Wie kann ich diese große Array-Berechnung vektorisieren und beschleunigen?
- 27. Wie kann ich meinen jaggey ziehbaren Code beschleunigen?
- 28. Wie kann ich die Aktualisierungs-/Ersetzungsvorgänge in PostgreSQL beschleunigen?
- 29. Wie kann ich die Leistung von Java DatagramSocket beschleunigen?
- 30. Wie kann ich die Rendergeschwindigkeit von Visual Studio 2010 Text-Editor beschleunigen?
Dieser Ansatz war genau das, was ich brauchte. Danke für das Posten! –