天天看點

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

原文:

提高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的性能分析工具就很不錯,可以看到可視化樹的元素和記憶體占用情況。

感謝您的閱讀。