我有一个DataGrid,它的ItemsSource设置为DataTable。DataTable包含24列和大约1600行(实际上稍后我将不得不加载更多的行,但现在这已经够麻烦的了)。
尽管将列和行的虚拟化设置为活动状态,DataGrid仍然需要大约30秒来显示这1600行。在那之后,垂直滚动就行了,水平滚动就慢了,尽管你可能会认为情况正好相反。
如果我运行内存分析器,我可以验证应用程序使用的大部分内存来自DataGridCells、Border、ContentPresenters和Textblock。对我来说,这表明网格没有正确地虚拟化它的行。
有人能确认DataGrid的虚拟化存在问题吗?或者,在这种控制的实现中是否存在某种臭名昭著的陷阱?
期待着任何形式的输入/建议。谢谢:)
发布于 2013-02-25 17:37:40
我已经解决了这个问题。我的DataGrid就在一个ScrollViewer里面,在里面它可以无限伸展。所以它被愚弄了,认为所有的东西都是可见的,这就是为什么它不会虚拟化它的项目。我去掉了ScrollViewer (DataGrid本身也有滚动条),现在它可以完美地工作了。
https://stackoverflow.com/questions/14958116
复制相似问题