WPF MahApps Listview 性能

WPF MahApps Listview performances

我用一个简单的 List<T> 源填充了一个 ListView。我还在 ListView 上使用分组(使用默认视图 GroupDescriptions)和排序(使用 ListView 项目 SortDescriptions)。

如果我显示的项目很少,没问题,但是当我加载 10 000 个项目时,应用程序冻结,加载完成后滚动变得非常困难。

在其他一些主题上,我看到我必须使用 MahApps 列表视图强制虚拟化:

<Style BasedOn="{StaticResource MahApps.Styles.ListView.Virtualized}" TargetType="ListView" />

而且我想我已经正确激活了它,因为当我检查我的 ListView 属性 时 CanContenScroll 为 True(并且它不在样式定义之前)。尽管如此,显示还是很慢。

我想念完全激活虚拟化的东西吗?我应该使用其他集合类型而不是 List<T> 吗?

根据@mm8 建议在没有 MahApps 的情况下进行测试,我不得不在 ListView 定义中明确设置 MahApps.Styles.ListView.Virtualized 的内容:

<ListView ScrollViewer.CanContentScroll="True" ScrollViewer.IsDeferredScrollingEnabled="True" 
VirtualizingPanel.IsVirtualizing="True" VirtualizingPanel.IsVirtualizingWhenGrouping="True">

然后它运行良好,所以我再次启用了 MahApps 样式,允许在 ListView 中进行显式定义(而不是像以前那样使用全局样式)并且它仍然工作得很好。

所以我不知道为什么,但是使用全局样式不起作用。也许在其他地方覆盖它。