WPF DataGrid OxyPlot 卡頓優化
- 2021 年 12 月 24 日
- 筆記
不是優化,我是想用這個標題吸引遇到相同問題的同學過來看看。
UI如下,左邊DataGrid有7列,右邊OxyPlot顯示折線圖
列表4000+數據,折線圖4000+個點,頁面卡的用不了。
體現就是列表滾動時 滾輪滾動2秒後列表開始一幀一幀的動。。
第一時間DataGrid開啟虛擬化,EnableRowVirtualization=”True” EnableColumnVirtualization=”True” VirtualizingPanel.VirtualizationMode=”Recycling” VirtualizingPanel.IsVirtualizing=”True” VirtualizingPanel.IsContainerVirtualizable=”True”
結果只是好了一點點,滾輪滾動1秒後列表開始一幀一幀的動。
此時我還沒有發現 OxyPlot 的問題。
花了一天時間,Google到的都是說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中文文檔少,遇到很多問題只能自己一個屬性一個屬性實驗。但這個組件真的很好用。還是免費的。