我们遇到了 WPF 数据网格的滚动问题。通过一些分析发现 ScrollViewer.CanContentScroll = true 是罪魁祸首。删除并使其为假,滚动问题已得到修复。但是昨天我正在分析由于错误地绑定了 50k 记录而导致 WPF 应用程序的内存占用增加到超过 1.3Gb 的错误。它仍然质疑绑定甚至 10k 记录的能力。用户不想要分页。(这是一个要求,对此无能为力!)
在进一步的读者中发现设置 ScrollViewer.CanContentScroll = false 会使 UI 虚拟化为 false。这使 WPF 绑定所有记录并将其呈现在屏幕上。这会导致内存占用量激增和性能问题。
现在我们认为如果要绑定的记录最少,则设置 ScrollViewer.CanContentScroll= false,否则设置为 true。
简而言之:我们要么陷入滚动问题,要么陷入 UI 虚拟化。有什么东西可以同时解决吗?已阅读有关数据虚拟化的信息,但我们真的需要走那么远吗?我是否遗漏了 .net4.0 中的任何可以帮助我们的东西?