MVVM集合异步加载

MVVM集合异步加载,mvvm,silverlight-4.0,Mvvm,Silverlight 4.0,我有一个包含5个集合的视图模型 它们都是异步加载的 我需要从服务加载主实体,并根据实体中的值设置每个集合的选定值。在加载实体并设置所选值之前,如何等待所有集合都已加载 当您的MainViewModel(带有“main entity”的模型)完成其SelectedRecord属性的加载集时,我觉得我遗漏了什么。设置此属性应引发事件或广播其他ViewModels可以侦听的消息 当其他视图模型收到来自主视图模型的消息时,将IsDirty标志设置为true。然后,当其他ViewModel完成加载时,它们

我有一个包含5个集合的视图模型

它们都是异步加载的

我需要从服务加载主实体,并根据实体中的值设置每个集合的选定值。在加载实体并设置所选值之前,如何等待所有集合都已加载


当您的
MainViewModel
(带有“main entity”的模型)完成其
SelectedRecord
属性的加载集时,我觉得我遗漏了什么。设置此属性应引发事件或广播其他ViewModels可以侦听的消息


当其他视图模型收到来自主视图模型的消息时,将
IsDirty
标志设置为true。然后,当其他ViewModel完成加载时,它们将设置它们的
SelectedData
属性(如果MainViewModel首先完成)或者,每当
IsDirty
设置为true时——以先到者为准

如果它们是快速加载的,则可以将调用上一个加载的下一个加载链接到上一个回调上

如果没有,则将所有集合保留为null/nothing(许多人在构造函数中初始化它们),并在每个集合的加载回调中,在填充集合之前实例化集合,如果没有返回任何实体/结果,则将其保留为空。然后调用一个函数,该函数检查所有集合是否为null/nothing,并立即为所有集合调用inotify


一种类似的方法允许您在加载集合之前实例化集合,即为集合创建一个附加属性“isLoaded”,并使用它。

I只有一个ViewModel。它有5个可观察的集合。好的——同样的原则也适用。当主实体完成加载时,有两种可能性:1。其他集合仍在加载——在这种情况下,您可以设置一个标志,指示主数据已加载。加载其他集合后,将剩余属性设置为2。其他集合已完成加载——在这种情况下,您将设置其余的属性