高性能WPF数据网格

高性能WPF数据网格,wpf,performance,datagrid,scroll,Wpf,Performance,Datagrid,Scroll,简而言之,我的问题是:我们目前正在项目中使用标准WPF dataGrid,它随WPF.NET4及以上版本一起提供。不幸的是,对于我们所使用的数据规模来说,性能非常糟糕(事实上没有那么多,比如说多达200列*50~100行):当虚拟化被禁用时,要么加载时间太长(定制超过10秒),要么水平滚动太慢,无法接受。目前使用的是不同的滚动,但这是一种解决方法,而不是真正的修复方法(而且它的使用对列IMO来说是违反直觉的) 考虑到这一点,要求并不高:基本上是一个可编辑的网格,支持单元格模板和单元格选择(目前没

简而言之,我的问题是:我们目前正在项目中使用标准WPF dataGrid,它随WPF.NET4及以上版本一起提供。不幸的是,对于我们所使用的数据规模来说,性能非常糟糕(事实上没有那么多,比如说多达200列*50~100行):当虚拟化被禁用时,要么加载时间太长(定制超过10秒),要么水平滚动太慢,无法接受。目前使用的是不同的滚动,但这是一种解决方法,而不是真正的修复方法(而且它的使用对列IMO来说是违反直觉的)

考虑到这一点,要求并不高:基本上是一个可编辑的网格,支持单元格模板和单元格选择(目前没有排序、分组和筛选)

为了获得更好的结果,我们花了很多时间进行“微观优化”(在各种虚拟化中…),但是,从某种程度上说,结论是WPF datagrid是一个性能非常低的网格。在构建一个示例项目时,仅使用所需大小的WPF datagrid就更加明显了:即使没有任何定制,性能问题也是显而易见的


因此,我目前正在寻找一种“高性能”数据网格或解决方案,以满足上述要求。我已经看过WPF扩展工具包网格,但我还没有被说服。。。listview+gridview提供了良好的性能,但不支持任何单元级操作(选择…)。事实上,市场上的大多数datagrid都可以很好地扩展到很多行,但当列数超过10-20时,扩展性很差

你把它绑在什么上面?数据表也很慢。我做的是一个ListView Gridview。对于“编辑”,有当前选定行的详细信息。200列乘100行仍然需要1-2秒才能加载。如果您认为要求不高,那么编写您自己的可编辑网格。Datatable绑定到一个对象模型(MVVM模式),并显示文本和图形的组合(没有图像,但有一些样式)。我所说的“没有那么高”,是指功能性:我们都知道实现良好的性能并不是那么容易,这就是我寻求帮助的原因。当然,编写自定义网格是一种选择,但正如我所说的,我完全知道这比人们想象的要困难得多。因此,如果有另一个选项/组件要考虑,我欢迎它。@ Jallal从用户体验和可用性的角度来看,一个具有200列和100行的表是难以处理的。因此,如果我是用户,我不会使用它。确定你没有其他可能可视化你的数据吗?@DHN我同意你关于可用性的观点。我们的大多数屏幕显示的是10列*25行的datagrid,其中没有出现性能问题。但有两种情况是,用户可能会选择显示大量的列,而对于那些(顺便说一句,由于用户要求使用这些类型的屏幕,这些列可能会定期出现)WPF标准datagrid性能低于标准(特别是在列缩放方面,WPF datagrid似乎可以很好地缩放大量行)。FI,第一种情况是200列*25行,第二种情况是50列*100行。@Jallal发布相关代码和XAML。