【问题标题】:DataGrid scrolling issue fix leads to performance and memory issueDataGrid 滚动问题修复导致性能和内存问题
【发布时间】:2011-09-02 20:20:19
【问题描述】:

我们遇到了 WPF 数据网格的滚动问题。通过一些分析发现 ScrollViewer.CanContentScroll = true 是罪魁祸首。删除并使其为假,滚动问题已得到修复。但是昨天我正在分析由于错误地绑定了 50k 记录而导致 WPF 应用程序的内存占用增加到超过 1.3Gb 的错误。它仍然质疑绑定甚至 10k 记录的能力。用户不想要分页。 (这是一个要求,对此无能为力!)

在进一步的读者中发现设置 ScrollViewer.CanContentScroll = false 会使 UI 虚拟化为 false。这使 WPF 绑定所有记录并将其呈现在屏幕上。这会导致内存占用量激增和性能问题。

现在我们认为如果要绑定的记录最少,则设置 ScrollViewer.CanContentScroll= false,否则设置为 true。

简而言之:我们要么陷入滚动问题,要么陷入 UI 虚拟化。有什么东西可以同时解决吗?已阅读有关数据虚拟化的信息,但我们真的需要走那么远吗?我是否遗漏了 .net4.0 中的任何可以帮助我们的东西?

【问题讨论】:

    标签: wpf datagrid scrollviewer ui-virtualization


    【解决方案1】:

    如果您查看this question 的已接受答案... .

    但除此之外……你是对的。您要么获得流畅的滚动,要么获得虚拟化......不是两者兼而有之。

    此外,如果您对数据网格中的项目进行分组,请查看我不久前发布的this answer,以获得方便的性能改进。

    【讨论】:

    • 感谢 Scott,我会尝试其中一个选项并在此处更新!
    猜你喜欢
    • 2013-01-17
    • 2010-12-14
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    相关资源
    最近更新 更多