Windows phone 7 MVVM数据服务和跨ViewModels持久化数据

Windows phone 7 MVVM数据服务和跨ViewModels持久化数据,windows-phone-7,mvvm,windows-phone-8,mvvm-light,Windows Phone 7,Mvvm,Windows Phone 8,Mvvm Light,我使用的是MVVM Light,最后在DataService中存储了一些数据。这是因为我需要一个跨ViewModels共享一些数据(对象列表)的地方(我不希望下一个ViewModel再次从web服务获取数据) 我打破了一个模式吗?我觉得我不应该将数据保存在DataService中,它应该只处理数据的访问并将其返回到ViewModel。但我发现,将DataService插入到每个ViewModel中对于在它们之间共享数据非常有用 否则怎么做呢 感谢您的帮助,有几个选项: 如果数据位于手机上的本地数

我使用的是MVVM Light,最后在DataService中存储了一些数据。这是因为我需要一个跨ViewModels共享一些数据(对象列表)的地方(我不希望下一个ViewModel再次从web服务获取数据)

我打破了一个模式吗?我觉得我不应该将数据保存在DataService中,它应该只处理数据的访问并将其返回到ViewModel。但我发现,将DataService插入到每个ViewModel中对于在它们之间共享数据非常有用

否则怎么做呢


感谢您的帮助,

有几个选项:

如果数据位于手机上的本地数据库中,最好将Id从
ViewModelA
传递到
ViewModelB
。在这种情况下,我相信再次阅读
DataService
是可以的

如果数据是rest服务,
ViewModelA
可以调用
GetData(1,true)
,其中
DataService
中的方法签名是
GetData(int-id,refresh=false)
。然后
ViewModelA
可以将
Id
传递给
ViewModelB
。当
ViewModelB
调用
GetData(1)
时,您可以从数据服务返回缓存的值。如果由于某种原因缓存的值为null,请再次获取它

我现在倾向于遵循这种模式,我习惯于将
SharedData
单例注入到任何需要共享数据的视图模型中,但它感觉很臭。就像一个全局变量。对于一些应用程序状态的事情来说,这可能没什么问题,但是对于共享模型的某些部分来说,这感觉不太对
ViewModelB
依赖于
SharedData
,如果没有设置,那该怎么办

我很想知道别人是怎么做的