c# - WPF DataGrid 仅计算可见行

标签 c# wpf datagrid combobox

我记得几个月前读过一篇关于 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/

相关文章:

c# - 如何在C++中将对象作为参数传递?

wpf - 为什么将ScrollViewer.CanContentScroll设置为false会禁用虚拟化

wpf - 如何在 WPF DataGrid 中将 XML 文件中的文本排序为数字?

c# - 从数组中取出两个数,使和为常数

c# - 将 HttpContext.Session 与 use.Session() 一起使用时出现 System.InvalidOperationException;放

wpf - 使用 WindowStyle=None 正确最大化 WPF 窗口

c# - 删除 WPF IsDefault

c# - MVVM Silverlight 数据网格 : Binding Columns Collection

c# - 如何: Read the content of a selected DataGrid row

c# - 我应该为枚举成员使用什么 AttributeTarget?