3

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

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

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

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

4

1 回答 1

2

如果您查看此问题的已接受答案...在答案的“在它们之间选择”部分,有一个建议的提示,可在项目不在视图中时将自定义装饰器的可见性设置为隐藏。

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

此外,如果您对数据网格中的项目进行分组,请查看我不久前发布的这个答案,以便于提高性能。

于 2011-09-02T20:28:33.413 回答