WPF DataGrid虚拟化无法正常工作?

时间:2013-02-19 12:58:52

标签: wpf datagrid virtualization

我有一个DataGrid,它将DataTable设置为ItemsSource。 DataTable拥有24列和~1600行(实际上我将不得不在以后加载更多行,但是现在这很麻烦)。

尽管将列和行的虚拟化设置为活动状态,但DataGrid大约需要30秒才能显示这1600行。 在那之后,垂直滚动工作正常,水平延迟,但你会反过来预期。

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

任何人都可以确认DataGrid的虚拟化存在问题吗?或者在实施这种控制时是否存在某种臭名昭着的陷阱?

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

2 个答案:

答案 0 :(得分:5)

我已经解决了这个问题。 我的DataGrid坐在ScrollViewer中,它可以无限延伸。所以它被欺骗了,认为一切都是可见的,这就是为什么它不会虚拟化它的项目。 我删除了ScrollViewer(无论如何,DataGrid都有自己的滚动条),它现在可以完美运行。

答案 1 :(得分:1)

嗯,好吧,我不知道为什么,但很明显我要在这里添加一些胶水文字来发布答案。也许,这个SO answer会帮助你。

修改

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