C# 使用WPF数据网格进行多线程处理?

C# 使用WPF数据网格进行多线程处理?,c#,wpf,multithreading,datagrid,rows,C#,Wpf,Multithreading,Datagrid,Rows,目前,我在程序中通过DataGrid的ItemsSource属性将WPF DataGrid绑定到数据集。在我当前的设置中,我遇到了导致GUI锁定的加载时间问题。是否可以多线程加载DataGrid,以便在加载行时填充行,而不是加载所有行,然后按照当前的方式填充DataGrid 我对多线程的概念非常陌生,因此任何帮助都将不胜感激 问题是要访问UI线程上需要的UI控件,因此对于数据绑定来说,很难在单独的线程中完成这项工作,否则就相对容易了。事实上,这个案子需要一些诡计 这里有一个非常好的示例,展示了如

目前,我在程序中通过DataGrid的ItemsSource属性将WPF DataGrid绑定到数据集。在我当前的设置中,我遇到了导致GUI锁定的加载时间问题。是否可以多线程加载DataGrid,以便在加载行时填充行,而不是加载所有行,然后按照当前的方式填充DataGrid


我对多线程的概念非常陌生,因此任何帮助都将不胜感激

问题是要访问UI线程上需要的UI控件,因此对于数据绑定来说,很难在单独的线程中完成这项工作,否则就相对容易了。事实上,这个案子需要一些诡计

这里有一个非常好的示例,展示了如何使用数据虚拟化来实现这一点:

此解决方案利用了这样一个事实,即当ItemsControl绑定到IList实现而不是IEnumerable实现时,它不会枚举整个列表,而是只访问显示所需的项。它使用Count属性来确定集合的大小,可能是为了设置滚动范围。然后,它将使用列表索引器遍历屏幕上的项目。因此,可以创建一个IList,该IList可以报告有大量的项,但只在需要时实际检索这些项