我有三个模型和视图模型,它们相互依赖进行验证。 此外,模型必须对彼此的变化做出反应。例如,如果修改ModelA.Prop1,则必须从DB重新填充ModelB.Funds。
如何在MVVM中实现这一点?
答案 0 :(得分:1)
如何解决这个问题可能取决于您的设置。
如果您在ViewModel中导致或检测到更改,则可以从ViewModel中启动刷新。因为允许ViewModel知道模型,所以你可以在坚持MVVM模式的同时做到这一点。对于ViewModel之间的通信,例如在ModelA的ViewModel和ModelB的ViewModel之间,您可以使用消息传递系统,例如MVVM light中的消息代理。
如果模型包装在存储库中,您可以使存储库负责同步模型。这样你就可以尽可能地延迟同步。
我想提出的一个注意事项是,如果模型如此依赖,您可能会看到一个模型而不是两个模型。先检查一下!如果您觉得需要在两个模型之间设置大量同步和依赖关系,那么很明显您可能正在查看单个模型。不要将模型与类混淆;模型可以有多个类。