这是我的问题:
我在数据库中有200,0000个Employee对象(Id,Name,Job,Address)存储。
我将所有Employee对象读取到Empolyee []。
我创建了一个窗体应用程序:
立即显示员工对象。
//表现非常好!
我创建一个WPF应用程序
加载速度非常慢,并且出现了超常的异常。
//如果我加载1000个对象,性能太慢了!
我怀疑是:
为什么同样的WPF UserControl被托管到WinFormApp和WpfApp中,它的性能差异是如此之大?
答案 0 :(得分:1)
它可能与虚拟化有关吗?例如,WPF数据网格默认情况下已启用虚拟化,但是如果将数据网格放置在堆栈面板中并且不提供任何宽度/高度限制,那么您实际上会使虚拟化无效,因为堆栈面板允许数据网格无限增长,因此必须为数十万件物品创建DataGridRows。
我只是猜测你的usercontrol可能会发生同样的效果。在WinForms中,托管控件可能提供特定的宽度/高度限制,并且不允许用户控件无限增长。另一方面,在WPF中,根据WpfApp的MainWindow的定义方式,用户控件可能无限增长。
尝试为您的usercontrol或mainwindow设置特定的宽度/高度,看看性能是否会更好......