WPF Datagrid 渲染性能優化


WPF  Datagrid的在數據比較大時,加載一般在后台采用異步,前端采用轉圈圈來表示。但是即便這樣,也會存在渲染過慢產生的卡頓現象。

產生渲染卡頓的有很多,根本的原因還是內部成員元素的渲染的性能問題,尤其是在內部采用 DataGridTemplateColumn.CellTemplate 來定義button等導致性能更是直線下降,20行數據卡個2秒鍾很常見

下面來舉例一些常見的 Datagrid 設置可以優化Datagrid的渲染。

1.   ScrollViewer.CanContentScroll="True" 

此設置表示當前滾動條提前計算滾動條的滾動范圍,設置成false則變為實時,True 的話可以顯著加快渲染,但是也會造成滾動時按照Item滾動而不是像素滾動,就會導致所謂的滾動不是那么絲滑;

注意:False情況下,整個控件的虛擬化會取消,即便設置了   VirtualizingPanel.IsVirtualizing="True" 也沒用;

2. 數據綁定時 設置  ItemsSource="{Binding 數據集合,IsAsync=True}"

設置此選項可以在渲染時,整個窗體還是異步的,不會有像獨占那種你必須等待渲染那種卡頓的感覺。

 

一些其他設置可以會有幫助,這里把性能最大化的設置都納入到Datagrid里面,僅供參考,按照實際情況選用。

<DataGrid ItemsSource="{Binding xxs,IsAsync=True}" VirtualizingPanel.IsContainerVirtualizable="True" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.VirtualizationMode="Recycling" ScrollViewer.CanContentScroll="True" EnableColumnVirtualization="True" EnableRowVirtualization="True"
/>

 


免責聲明!

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



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