Ich entwickle eine WPF-App, in der viele UI-Steuerelemente gleichzeitig gerendert werden und Animationen verlangsamt werden. Gibt es eine Möglichkeit, dies zu verhindern?Wie erhalten Sie die beste Leistung in WPF, wenn viele UI-Steuerelemente gerendert werden?
Antwort
Ohne mehr über die spezifische Art zu wissen, wie Sie Steuerelemente laden, ist es schwer zu sagen. Aber hier ist meine Hinweise und Tipps:
Verwenden ObservableCollection nicht, es sei denn Sie tatsächlich den Inhalt der Sammlung im laufenden Betrieb zu ändern. Wenn Sie mit einer Liste durchkommen können, verwenden Sie diese. Wir haben ObservableCollection wie einen Haufen Neulinge überall benutzt. Dies hat unsere Anwendung massiv beschleunigt.
Rufen Sie PropertyChanged nur auf, wenn sich die Eigenschaft wirklich geändert hat - vergleichen Sie sie ggf. mit der vorherigen Eigenschaft.
Betrachten Sie die Verwendbarkeit der Anwendung. Wenn Sie feststellen, dass viele Steuerelemente gleichzeitig auf dem PC verwirrend sind, ist dies wahrscheinlich auch für den Benutzer verwirrend. Kannst du einige von ihnen in einem Expander verstecken? Legen Sie sie auf verschiedene Tabs? Gibt es eine Möglichkeit, weniger Informationen anzuzeigen, die die App intuitiver machen könnten?
Instrumentieren Sie den Code/fügen Sie einige zeitgesteuerte Protokollierung hinzu und überprüfen Sie, ob es wirklich das Rendering ist, das das Problem verursacht. Betrachten Sie dann die Berechnungen und Beziehungen, die hinter der Szene ablaufen (siehe die ersten beiden Hinweise für die Art von Sachen, die Sie ändern können).
Fügen Sie weniger Steuerelemente hinzu, verwenden Sie weniger Animationen oder erhalten Sie eine bessere Grafikkarte. :)
Ich habe bessere Grafikkarte, genug RAM, guter Prozessor. Ich möchte nur, gibt es einen Trick oder was auch immer zu machen wpf app reibungslos laufen. – Code0987
MSDN hat einige Empfehlungen: msdn wpf perrformance
Und auch Blog meinen Lieblings Neulingen: Wpf Tutorial
Nutzung Virtualisierung, wo immer möglich -
http://bea.stollnitz.com/blog/?p=338
http://bea.stollnitz.com/blog/?p=344
http://bea.stollnitz.com/blog/index.php?s=Virtualization+wpf
Schauen Sie sich das article on WPF Performance tuning von Paul Harrington von VS2010 Entwicklerteam. Es enthält eine Reihe nützlicher Tipps zur WPF-Leistung und listet die Tools auf, die diese Leute verwendet haben.
- 1. Wie werden große Bitmaps in WPF ordnungsgemäß gerendert?
- 2. Wie kann die Leistung verbessert werden, wenn viele Ansichten auf einem Bildschirm angezeigt werden?
- 3. Wie maximiere ich die Leistung in Python, wenn viele I/O-Operationen ausgeführt werden?
- 4. Wie viele Kerne sind in Android-Geräten? und wie viele Threads kann ich für die beste Leistung verwenden?
- 5. Erzeugt es viele Variablen, die die Leistung in JavaScript beeinträchtigen?
- 6. WPF Rendering langsame Leistung
- 7. Wie kann die App-Leistung gesteigert werden?
- 8. Wie Elemente mit jQuery ausblenden, bevor sie gerendert werden?
- 9. WPF RichTextBox SelectionChanged Leistung
- 10. Kinder werden nicht neu gerendert, wenn die Elternkomponente optimiert ist
- 11. In Meteor, wie die Vorlagen auf der Serverseite gerendert werden?
- 12. Welcher keyvalue Store hat die beste Leistung?
- 13. So erhalten Sie die beste Leistung von 8-Core-System mit Intel Fortran
- 14. Verbessern Sie die Leistung
- 15. Gebündelte Skripts, die nicht ordnungsgemäß gerendert werden
- 16. WPF DataGrid-Leistung verbessern
- 17. Alter, wie viele Optionen in einem Auswahlfeld gerendert werden in React
- 18. WPF Databinding Leistung
- 19. Wie kann die SQLLDR-Leistung verbessert werden?
- 20. So erhalten Sie die DPI des Druckers in WPF
- 21. Wie können WPF-Objekte, die von Freezable abgeleitet werden, in XAML eingefroren werden?
- 22. Wie bewerten Sie die Leistung von Webservern?
- 23. Leistung, wenn Ausnahmen nicht ausgelöst werden (C++)
- 24. Reihenfolge der ANDS in Where-Klausel für die beste Leistung
- 25. beste Weg, um viele Dateien in Platten
- 26. Rspec Testvorlagen gerendert werden
- 27. Welche Paging-Methode (Sql Server 2008) für die beste Leistung?
- 28. Woher wissen Sie, ob Ihr WPF-Steuerelement gerendert wird?
- 29. Erhalten Sie Datensätze, die nicht in Tabellen enthalten sind, wenn sie in In-Klausel übergeben werden?
- 30. Wie gerendert werden Javascript Quelle mit NSURLConnection
Ich würde sagen, dass Sie ObservableCollection nicht verwenden, wenn Sie es nicht an einige UI-Komponenten binden. http://StackOverflow.com/Questions/1007691/ObservableCollection-Databinding-Performance – akjoshi
Es gibt auch Kontexte, in denen es besser ist, nur eine Liste zu verwenden, besonders wenn es sich um Daten handelt, die sich überhaupt nicht ändern. Der einzige Vorteil von ObservableCollection besteht darin, dass die Benutzeroberfläche erkennt, ob ein zusätzliches Element hinzugefügt wurde. – Lunivore