WPF listview / gridview性能可怕,建议

时间:2009-02-20 19:32:11

标签: wpf performance gridview listview

我有一个窗口,使用绑定到ObservableCollection的WPF ListView / GridView。表演完全可怕。每次添加/删除/修改项目时,应用程序都会尝试加载300-400项和CPU使用率峰值。分析并没有发现任何明显的东西。

有人有任何建议吗?

6 个答案:

答案 0 :(得分:8)

检查这些属性:

VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
ScrollViewer.IsDeferredScrollingEnabled="True"

答案 1 :(得分:5)

您需要按照本文中的说明虚拟化您的ListView ItemSsource:{strong> WPF: Data Virtualization {strong} {<3}} Paul McClean

答案 2 :(得分:2)

首先猜测,您是否正在为每个ListViewItem使用复杂的数据模板?这可能是从许多图像到(旧)BitmapEffects,甚至是从数据库中按需获取数据的延迟加载属性(这可能会导致您执行许多db调用来呈现每个视觉效果,具体取决于数据模型的方式)作品)。

第二个猜测,列表本身能够快速运行其加载/添加/修改/删除的例程(意味着在呈现数据时出现问题),或列表本身是否缓慢地执行这些作业(表明列表中有一些一种问题)。

答案 3 :(得分:1)

您是否按照此问题中的建议尝试了虚拟化?

WPF ListView Very Slow Performance - Why? (ElementHost, or Other Reason?)

答案 4 :(得分:1)

显而易见的是,确保你已升级到.net 3.5 SP1,那里有很多性能提升。

同样值得研究一下WPF datagridview控件,因为.net 3.5 SP1中的许多性能工作都是如此,因此datagridview在大型数据集上具有良好的性能。

http://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25047

答案 5 :(得分:0)

我有类似的问题。将MaxHeight设置为大于ListView实际高度的值,这要归功于here,对我来说立即解决了这个问题,但是我仍然不明白它是如何工作的。