Wpf items异步逐个加载项的控件

Wpf items异步逐个加载项的控件,wpf,datagrid,asynchronous,items,Wpf,Datagrid,Asynchronous,Items,我通过派生传统的基于tookit的WPF数据网格来创建自定义数据网格。我希望网格中的功能能够异步地逐个加载项,其中只要ItemsSource发生更改,即新集合被设置为ItemsSource属性,或者绑定集合由于rae添加、移动或删除的项而发生更改(其中,当底层源实现INotifyCollectionChanged(如ObservableCollection)时,通知到达数据网格) 这是因为,即使在datagrid下面使用虚拟化stackpanel,当数据行有多个列并且其中一些是基于模板的时,加载

我通过派生传统的基于tookit的WPF数据网格来创建自定义数据网格。我希望网格中的功能能够异步地逐个加载项,其中只要ItemsSource发生更改,即新集合被设置为ItemsSource属性,或者绑定集合由于rae添加、移动或删除的项而发生更改(其中,当底层源实现INotifyCollectionChanged(如ObservableCollection)时,通知到达数据网格)

这是因为,即使在datagrid下面使用虚拟化stackpanel,当数据行有多个列并且其中一些是基于模板的时,加载数据行也需要时间(2-3秒延迟)。通过上述行为,延迟“似乎”已经减少,从而使datagrid感觉到它拥有数据并且响应能力足以加载数据

我怎样才能做到呢

Thx
Vinit。

听起来像是在寻找
数据虚拟化
”,这通常意味着创建自己的类似于IList的自定义类型,并在事后对对象进行大量处理

最终,网格显示的数据将如下所示:

Index 0: new MyDataObject(0);
Index 1: new MyDataObject(1);
MyDataObject实现INotifyPropertyChanged

在构造函数中,您执行必要的逻辑,以确定时间、计划或解释何时应该读取实际结果。在此之前,您将从属性中返回相当空的数据…null和string.empty

然后,一旦数据变得可用(理想情况下是在后台线程中,从任何地方读取-您自己的本地数据,或数据库或web服务),您就可以更新真正的底层属性值并触发属性更改通知,以便正确加载UI

这有点太复杂了,所以一些搜索会有帮助。希望这能让你开始