我记得几个月前读过一篇关于 DataGrid 功能或 DataGrid 扩展版本的文章,该功能仅在用户可见的行和一些不可见的行上连接通知、绑定(bind)等以提供快速显示显示时。
我找不到这篇文章,我的谷歌搜索也没有找到任何结果。
有人知道这个功能是什么以及它叫什么吗?
我想要这样做的原因是因为我正在显示一个包含大量行(1000+)的 DataGrid。行的定义使得其中两个单元格显示可能值的组合框。如果没有这些组合框,数据网格几乎会立即加载(执行 SQL 脚本并转换为绑定(bind)到 DataGrid 的 DataTable)并显示。当我添加组合框时,加载大约需要 10-15 秒。我认为这篇文章解决了这个问题,并表示性能会更好,因为 DataGrid 仅创建即时 View 所需的组合框,而不是所有 1000 多行。
我愿意接受有关如何在将组合框添加到 DataGrid 时避免长时间等待的其他建议(要求声明这两个单元格是组合框,因此不能删除)。
最佳答案
也许您正在考虑 RowVirtualization属性(property)?
... 当 EnableRowVirtualization 属性设置为 true 时,DataGrid 不会为绑定(bind)数据源中的每个数据项实例化 DataGridRow 对象。相反,DataGrid 仅在需要时创建 DataGridRow 对象...
换句话说,这将通过仅将正在显示的行加载到内存中来提高性能。在事情开始变得非常缓慢之前,典型应用程序可以显示的控件数量是有限的。 虚拟化控件是这个问题的答案。
例如引用这个问题的答案:Upper (reasonable) limit to number of user control instances 。尽管这专门适用于 UserControls,但相同的概念适用于所有控件。
关于c# - WPF DataGrid 仅计算可见行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25690266/