WPF DataGrid虚拟化无法正常工作



我有一个DataGrid,它有一个设置为ItemsSource的DataTable。DataTable包含24列和大约1600行(实际上我以后必须加载更多的行,但目前这已经够麻烦的了)。

尽管将列和行的虚拟化设置为活动,但DataGrid显示这1600行大约需要30秒。在那之后,垂直滚动效果很好,水平滚动很慢,尽管你可能会期望相反。

如果我运行内存探查器,我可以验证应用程序使用的大部分内存来自DataGridCells、Borders、ContentPresenters和Textblock。对我来说,这表明网格没有正确地虚拟化其行。

有人能确认DataGrid的虚拟化存在问题吗?还是在实施这种控制的过程中存在某种臭名昭著的陷阱?

期待任何形式的意见/建议。感谢:)

我已经解决了这个问题。我的DataGrid位于ScrollViewer中,在其中它可以无限拉伸。所以它被愚弄了,以为一切都是可见的,这就是为什么它不会虚拟化它的物品。我删除了ScrollViewer(DataGrid本身就有滚动条),现在它工作得很完美。

嗯,好吧,我不知道为什么,但很明显,我必须添加一些粘贴文本才能在这里发布答案。也许,这个SO答案会对你有所帮助。

编辑

作为额外的建议,我建议你考虑一下你的方法。是否真的有必要向DataGrid添加1.6k+个项目?也许你应该考虑延期装货。

最新更新