WPF DataGrid仅计算可见行

本文关键字:计算 DataGrid WPF | 更新日期: 2023-09-27 18:20:44

我记得几个月前读过一篇文章,内容是关于一个功能或DataGrid或扩展版本的DataGrid,它只在用户可见的行和一些不可见的行上连接通知、绑定等,以便在显示时提供快速显示。

我找不到这篇文章,我的谷歌搜索也没有任何结果。

有人知道这个功能是什么,它叫什么吗?

我之所以要这样做,是因为我显示了一个具有大量行(1000+)的DataGrid。行的定义使得其中两个单元格显示可能值的组合框。如果没有这些组合框,数据网格加载(执行SQL脚本并转换为绑定到DataGrid的DataTable)并几乎立即显示。当我添加组合框时,加载大约需要10-15秒。我认为这篇文章解决了这个问题,并说性能会更好,因为DataGrid只创建了即时视图所需的组合框,而不是所有1000+行。

我对如何避免将组合框添加到DataGrid时等待时间过长的其他建议持开放态度(要求这两个单元格是组合框,因此不能删除)。

WPF DataGrid仅计算可见行

也许您正在考虑RowVirtualization属性?

... When the EnableRowVirtualization property is set to true, the DataGrid does not instantiate a DataGridRow object for each data item in the bound data source. Instead, the DataGrid creates DataGridRow objects only when they are needed ...

换句话说,这将通过仅将正在显示的行加载到存储器中来提高性能。在事情开始变得非常缓慢之前,一个典型的应用程序可以显示的控件数量是有限制的虚拟化控件就是解决这个问题的方法。

例如,请参阅此问题的答案:用户控件实例数量的上限(合理)。尽管这特别适用于UserControls,但同样的概念也适用于所有控件。