提高WPF程序性能的幾條建議


這篇博客將介紹一些提高WPF程序的建議(水平有限,如果建議有誤,請指正。)

1. 加快WPF程序的啟動速度:

(1).減少需要顯示的元素數量,去除不需要或者冗余的XAML元素代碼.

(2).使用UI虛擬化,只顯示當前需要顯示的元素.

(3).不要把不要顯示的自定義控件隱藏在主界面中,雖然它們不會顯示出來,但是程序啟動時還是會去計算自定義控件所需的空間和位置. 

2. 耗時操作放在放在非UI線程上處理,保持UI的順暢。處理完成后如果需要在UI上展示,調用Dispatcher.BeginInoke()方法。更多內容參考WPF QuickStart系列之線程模型(Thread Model);

3. 關於Data Binding,根據實際情況對Binding指定不同的Mode,性能OneWay優於TwoWay。另外修正掉系統中Binding錯誤,可以在Visual Studio的輸出日志中查找System.Windows.Data Error;

4. Resources: 系統資源,通常情況下我們會把樣式資源都統一到App.xaml中,這是很好的,便於資源的管理。不過盡量把多次重復用到的資源放到App.xaml中。例如某些頁面的資源只會在當前頁面中使用到,那么可以把資源定義在當前頁面; 如非必要,不要使用DynaicResource,使用StaticResource即可;

5. 對Item類型控件重寫時,使用VirtualizingStackPanel作為ItemPanel,這樣列表資源可以只渲染當前需要的內容。不過如果設置CanContextScrol="True"會阻止虛擬化,另外使用VirtualizingStackPanel時,可以設置VirtualizingStackPanel.VirtualizationMode="Recycling", 這樣已經顯示過的列表不會被重復創建和釋放掉。

6. 盡量少的使用Animation,尤其在程序啟動時,Animation渲染時會占用一些CPU資源。

大概就這些。另外遇到性能問題時,可以使用一些工具來分析,VS 2015的性能分析工具就很不錯,可以看到可視化樹的元素和內存占用情況。

感謝您的閱讀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM