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