我正在使用 WPF 数据网格(.Net 或 Toolkit),当绑定到可观察的集合时速度慢得令人无法接受。它包含大约 3500 行和 10 列,需要一分钟多的时间来显示内容。一切都表明它没有对数据进行 UI 虚拟化。但是,我无法弄清楚为什么会这样。
我没有使用分组。我通过将网格放置在具有固定高度的面板中来确保包含网格的高度。我已经在 DataGrid 上设置了所有虚拟化属性。我已签入 snoop 并设置了这些属性。然而,snoop 也显示加载后可视化树中有数千个数据网格。这是否是由使用 snoop 引起的我不知道。我尝试使用 AQTime 来了解发生了什么。减速似乎不在我们的代码中,而是在系统代码中。但是,我找不到一种轻松查看 WPF 在做什么的方法。我已经剥离了网格并尝试了 .Net 4 DataGrid 和工具包 DataGrid。两者都显示初始数据的速度慢得令人无法接受。我已经尝试修复行高和列宽。这也没什么区别。
如何确认虚拟化已打开,如果已关闭,为什么要关闭?如何调试代码之外发生的事情?有什么方法可以查看 WPF 在做什么?(我尝试过使用 WPF 性能套件,但由于某种原因它没有为我们的应用程序提供任何输出)。
我的想法不多了。当 UI 中只有 10 行可见时,它不应该这么慢。
任何人都可以帮忙吗?