WPF DataGrid OxyPlot 卡頓優化


不是優化,我是用這個標題吸引遇到相同問題的同學過來看看。

UI如下,左邊DataGrid有7列,右邊OxyPlot顯示折線圖 

 

列表4000+數據,折線圖4000+個點,頁面卡的用不了。

體現就是列表滾動時 滾輪滾動2秒后列表開始一幀一幀的動。。

 

第一時間DataGrid開啟虛擬化,EnableRowVirtualization="True" EnableColumnVirtualization="True" VirtualizingPanel.VirtualizationMode="Recycling" VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.IsContainerVirtualizable="True"

結果只是好了一點點,滾輪滾動1秒后列表開始一幀一幀的動。

 

此時我還沒有發現 OxyPlot 的問題。

 

花了一天時間,谷歌到的都是說WPF的效率差。。。我發現近期的帖子比較少,畢竟現在WPF開發者較少。

拋開代碼,清空一下大腦再想想。4000+行數據,只有7列,都是string,就算效率再差也不可能這么差吧。最后使用排除大法。把折線圖刪掉,UI絲滑的很!!! WPF性能不差,同學們優化UI時,記得看一眼是不是其他控件引起的。

 

OxyPlot代碼

<oxy:LineSeries Title="{Binding LineTitle1}" ItemsSource="{Binding ChartPointList}" MarkerType="Circle" IsManipulationEnabled="True" Color="#FFF74D4D"/>

排除法,刪掉列表只留折線圖,卡到爆,點越多越卡。看下官方demo,demo里2萬個點還很流暢。

解決辦法:還是用的排除大法   刪除掉MarkerType屬性

<oxy:LineSeries Title="{Binding LineTitle1}" ItemsSource="{Binding ChartPointList}" IsManipulationEnabled="True" Color="#FFF74D4D"/>    

猜測他每一個點都是圓圈,他可能是在頁面上添加了n個控件導致UI卡頓,可能是Range,我沒來得及看他的源碼。

 

總結:

UI卡,不都是DataGrid的鍋。至於為什么其他控件導致DataGrid也非常卡,我不清楚,希望有大神指教一下。

 

 

OxyPlot中文文檔少,遇到很多問題只能自己一個屬性一個屬性實驗。但這個組件真的很好用。還是免費的。


免責聲明!

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



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