我正在使用MVVM作为我的WPF架构,并且我已经实现了WPF TreeView的延迟加载(只有在展开时才会递归加载子项)。
然而,我还需要在展开时实现异步加载。有没有一种方法可以做到这一点?我需要将其保持在控件级别,而不是在代码后台/应用程序级别。
谢谢
我正在使用MVVM作为我的WPF架构,并且我已经实现了WPF TreeView的延迟加载(只有在展开时才会递归加载子项)。
然而,我还需要在展开时实现异步加载。有没有一种方法可以做到这一点?我需要将其保持在控件级别,而不是在代码后台/应用程序级别。
谢谢
以下是如何实现的:
这可以防止TreeViewItem在展开之前设置其ItemsSource。 创建此机制需要一些工作,但一旦创建,您可以通过仅从HierarchicalDataTemplate中删除ItemsSource并在ItemContainerStyle中设置它来使任何TreeView延迟加载。
如果您使用懒加载和分层数据模板,您只会得到您所选中的项。请记住,TreeView需要加载比其显示的一级更低的级别,以确定它是否应该显示展开/折叠切换按钮。
GetChildren()
需要花费时间时,将调用放在单独的线程中是有意义的。然后就存在同步问题,而GUID可以解决这个问题。 - bohdan_trotsenko