据我了解,ListView的默认ItemsPanel是VirtualizingStackPanel。当我为列表视图创建GroupStyle时,刷新率非常糟糕。根据这篇文章中的评论
WPF ListView Very Slow Performance - Why? (ElementHost, or Other Reason?)
GroupStyle使用StackPanel覆盖默认的VirtualStackPanel。我已经明确地声明了VirutalzingStackPanel作为我的ListView的ItemsPanel,但性能仍然很糟糕。为什么分组这么慢?我不明白分组的可能性很大。
答案 0 :(得分:3)
正如下面帖子的作者提到的那样
在虚拟化的普通WPF ItemsControl中,例如ListBox或ListView,当您开启分组时,虚拟化会关闭。这个 示例展示了如何实现分组的相同视觉效果 仍然具有虚拟化功能的相同API。
查看示例项目中开发的此解决方案。但是,根本不是一种简单或直接的方法。
请记住,此方法适用于.NET 4.0及更早版本。我相信.NET 4.5中引入了一些新方法来处理这种情况,例如VirtualizingPanel.IsVirtualizingWhenGrouping
属性。但是我没有测试过这个,因为我无法访问.NET 4.5 atm。
VirtualizingPanel.IsVirtualizingWhenGrouping Attached Property
获取或设置一个值,该值指示此VirtualizingPanel 在显示组时,虚拟化其集合中的项目。