MVVM集合异步加载

时间:2011-03-03 20:44:43

标签: mvvm silverlight-4.0

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

所有这些都是异步加载的。

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

我觉得我错过了什么。

2 个答案:

答案 0 :(得分:0)

当您的MainViewModel(具有“主要实体”的那个)完成加载时,设置其SelectedRecord属性。设置此属性应该引发事件或广播您的其他ViewModel可以侦听的消息。

当其他ViewModel从主视图模型接收消息时,将IsDirty标志设置为true。然后,其他ViewModel将在完成加载时设置SelectedData属性(在MainViewModel首先完成的情况下)或者IsDirty设置为true时 - 以先到者为准

答案 1 :(得分:0)

如果它们是快速加载的,你可以链接负载来调用前一个回调的下一个负载。

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

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