【问题标题】:WPF MahApps Listview performancesWPF MahApps Listview 性能
【发布时间】:2021-10-06 12:11:54
【问题描述】:

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

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

在我看到的其他一些主题上,我必须使用 MahApps listview 强制虚拟化:

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

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

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

【问题讨论】:

  • 不使用 MahApps 会不会更快?您是否将ListViewVirtualizingPanel.IsVirtualizingWhenGrouping 附加属性设置为`true`?

标签: .net wpf listview mahapps.metro


【解决方案1】:

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

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

然后它运行良好,所以我再次启用了 MahApps 样式,让 ListView 中的显式定义(而不像以前那样使用全局样式)并且它仍然像魅力一样工作。

所以我不知道为什么,但是使用全局样式不起作用。也许有什么东西会在别处覆盖它。

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    相关资源
    最近更新 更多