我对MVVM有点陌生,但我的困境是:
下面是我的问题:如何将该模型传播到每个视图模型?
这是桌面开发,而不是web开发,所以我坚持要确保模型在每个视图模型中。通常,我通过让控制器/父类将信息向下传播到每个ViewModel来处理这个问题,但是我开始进入一个更复杂的应用程序,它不是我需要传播的一个模型,而是多个模型和视图模型,这些模型和视图模型可能也需要调用需要该信息的服务,而且我对如何进行最佳实践感到有点困惑。
为了彻底起见,下面是一个简单的例子:
View1、View2、View3和View4都存在。
View1和View2需要模型M1、M2和M3 View3需要M1、M3和M4 View4需要模型M2、M3、M4和M5
现在每个视图都有自己的相应的ViewModel,VM1-4。
如何创建M1-5并将其传播到相应的VM?
发布于 2019-02-18 06:48:49
我建议您考虑使用事件聚合器模式来实现这一点。
事件聚合器作为许多对象事件的单一来源。它为许多对象的所有事件注册,允许客户机只向聚合器注册。..。当有很多对象是潜在的事件源时,事件聚合器是一个很好的选择。与其让观察者处理所有的注册问题,不如将注册逻辑集中到事件聚合器。除了简化注册之外,事件聚合器还简化了使用观察者时的内存管理问题。
发布于 2019-11-15 09:49:11
“依赖注入”和“控制反转”出现在我的脑海中。也就是说,您有一些“容器”,它负责创建实例和注入依赖项。
在这种情况下,必须确保每个模型只创建一个实例。这通常可以通过“命名实例”来实现。
在“穷人”的场景中,你可以:
M1 m1 = new M1();
M2 m2 = new M2();
...
V1 v1 = new V1(m1, m2, m3);
... etc.https://softwareengineering.stackexchange.com/questions/380533
复制相似问题