我正在開發一個WPF應用程序,其中很多UI控件在同一時間被渲染,它會減慢動畫等。有沒有什麼方法可以防止它?如何在大量UI控件呈現時獲得WPF中的最佳性能?
回答
不知道更多關於您加載控件的具體方式,很難說。然而,這裏是我的提示和技巧:
除非您實際上正在更改集合的內容,否則不要使用ObservableCollection。如果你可以擺脫一個列表,使用它。我們正在使用ObservableCollection,就像一大堆新手一樣;改變這個大大加快了我們的應用程序。
不要調用PropertyChanged,除非該屬性確實發生了變化 - 如果需要,可以與之前的屬性進行比較。
考慮應用程序的可用性。如果同時顯示很多控件對PC造成混淆,則可能會讓用戶感到困惑。你可以在擴展器中隱藏一些嗎?把它們放在不同的標籤上?有沒有辦法顯示較少的信息,這可能會使應用更直觀?
檢查代碼/添加一些定時日誌記錄,並檢查它確實是導致問題的呈現。然後考慮在幕後進行的計算和關係(請參閱可以更改的東西的前兩個提示)。
添加更少的控件,使用更少的動畫或獲得更好的視頻卡。 :)
我有更好的視頻卡,足夠的內存,良好的處理器。我只是想知道wpf應用程序能否順利運行。 – Code0987 2010-12-12 09:09:09
MSDN有一些建議:msdn wpf perrformance
而且也是我最喜歡的新手博客:Wpf Tutorial
看這個article on WPF Performance tuning由保羅·哈靈頓從VS2010開發團隊。它提供了許多有關WPF性能的有用提示,並列出了這些人使用的工具。
- 1. 如何簡化常規WPF呈現以最大化性能?
- 2. 如何在aspx頁面中獲得大量數據的最佳性能?
- 3. 如何提高在Windows窗體中呈現的WPF用戶控件的性能
- 4. 如何在呈現控件時重新獲得自動加載
- 5. 如何在使用'for update'光標時獲得最佳性能?
- 6. 如何使用JavaScript最佳地呈現大量的DOM元素?
- 7. 在WPF中,如何在實際呈現之前獲取控件的呈現大小?
- 8. 如何從MySQL的視圖中獲得最佳性能
- 9. 有沒有辦法在wpf WebBrowser控件上呈現WPF控件?
- 10. 獲得循環的最大性能
- 11. Julia需要多長時間才能獲得最佳性能?
- 12. 如何優化我的jQuery以獲得最佳性能?
- 13. 在WindowsFormsHost上呈現WPF控件
- 14. 當使用SlimDX呈現Direct3D內容時,未呈現WPF UI
- 15. 如何使JMS在設計中獲得最佳性能和可靠性?
- 16. 如何在dojoConfig屬性async爲true時呈現DateTextBox控件?
- 17. 如何在WPF控件中爲Thikness屬性添加最小和最大限制?
- 18. 如何知道控件(或窗口)何時在WPF中呈現(繪製)?
- 19. 最佳實踐,以實現在SQL Server最大性能
- 20. 我可以通過靜態變量獲得最佳性能嗎?
- 21. jQuery的:處理以獲得最佳性能的多個事件
- 22. JSF UI:片段呈現性能
- 23. WPF控件性能
- 24. 從多個線程使用libcurl - 如何獲得最佳性能?
- 25. JavaScript中的大量數據呈現性能
- 26. (WPF)UI最佳實踐
- 27. 在PHP中彙總數據集以獲得最佳性能
- 28. 用戶控件中的WPF用戶控件不呈現路徑
- 29. 如何獲得代碼中的列表框控件在wpf中
- 30. 開始構建自定義呈現控件的最佳方式?
我會說不使用ObservableCollection是你沒有綁定到一些UI組件。 http://stackoverflow.com/questions/1007691/observablecollection-databinding-performance – akjoshi 2010-12-13 13:03:13
還有一些情況下最好使用列表,特別是如果數據根本不會改變。 ObservableCollection的唯一好處是如果添加一個附加項目,UI將會發現。 – Lunivore 2010-12-13 19:22:04