zoukankan      html  css  js  c++  java
  • 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中文文档少,遇到很多问题只能自己一个属性一个属性实验。但这个组件真的很好用。还是免费的。

  • 相关阅读:
    PyQt(Python+Qt)学习随笔:containers容器类部件QStackedWidget重要方法介绍
    什么叫工业4.0,这篇接地气的文章终于讲懂了
    怎样 真正认识一个 人
    华为的绩效管理:减人、增 效、加薪
    羽毛球战术
    魔方教程
    员工培养:事前指导,事后纠正
    一把手瞄准哪里,核心竞争力就在哪里
    海尔的五次战略变革
    如何提高基层员工的执行力
  • 原文地址:https://www.cnblogs.com/asktao/p/15729501.html
Copyright © 2011-2022 走看看