Wpf GridView与DataGrid性能

Wpf GridView与DataGrid性能,wpf,performance,gridview,binding,datagrid,Wpf,Performance,Gridview,Binding,Datagrid,在将Datagrid上的.ItemsSource设置为集合时,我总是遇到严重的性能问题。该方法返回速度很快,但在任何东西实际呈现到屏幕之前,都有一个非常明显的延迟。由于Datagrid设置了虚拟化模式,因此它应该能够轻松处理非常大的集合。我在项集合的绑定属性中打印了一些调试信息,以确保它没有加载整个集合,但它只访问了前几个项,因此我确信虚拟化正在工作。即使对于较小的集合,延迟也大致相同,因此它似乎与实际数据加载无关 因此,导致减速的纯粹是渲染。大多数情况下,这是由于在ScrollViewer中使

在将Datagrid上的.ItemsSource设置为集合时,我总是遇到严重的性能问题。该方法返回速度很快,但在任何东西实际呈现到屏幕之前,都有一个非常明显的延迟。由于Datagrid设置了虚拟化模式,因此它应该能够轻松处理非常大的集合。我在项集合的绑定属性中打印了一些调试信息,以确保它没有加载整个集合,但它只访问了前几个项,因此我确信虚拟化正在工作。即使对于较小的集合,延迟也大致相同,因此它似乎与实际数据加载无关

因此,导致减速的纯粹是渲染。大多数情况下,这是由于在ScrollViewer中使用Datagrid或自动生成行高等原因造成的。但我排除了所有这些可能的原因,为所有内容指定了固定宽度,并确保没有任何内容设置为“无限”或“自动”

在把头发拔了几个星期后,我尝试了一件简单的事情:我把Datagrid换成了GridView。令我惊讶的是,它并没有遭受巨大的延迟,而是立即绘制。两者都有完全相同的属性和样式,所以我试图理解为什么Datagrid会慢得多


DataGrid比GridView慢有什么逻辑原因吗?

比较属性、事件和方法的数量。DataGrid有一个编辑模板。DataGrid只是一个更重的控件,GridView是为了速度而构建的

DataGrid总是非常慢,但是通过将
EnableRow/ColumnVirtualization
属性设置为true(不确定是否已经这样做)并设置固定列宽,可以获得(相当)显著的性能提升,因为这会减少对布局的重新计算


来自

的建议谢谢你,网格视图是我最好的选择。 我对数据网格有很多问题。 datagrid中存在非常高的内存泄漏。当您多次更新datagrid时,UI线程会变得越来越慢,直到软件崩溃。 但是gridview的性能非常高 . 多谢各位