首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据传播到多个ViewModels - C#

将数据传播到多个ViewModels - C#
EN

Software Engineering用户
提问于 2018-10-24 18:37:52
回答 2查看 1.6K关注 0票数 4

我对MVVM有点陌生,但我的困境是:

  1. 我有一个模型(或模型,但让我们保持简单)
  2. 我想在多个不同的视图上显示模型数据。
  3. 好的,所以每个视图的ViewModel都会被创建
  4. 创建UserControls (我的视图)
  5. 每个用户控件都获得一个ViewModel

下面是我的问题:如何将该模型传播到每个视图模型?

这是桌面开发,而不是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?

EN

回答 2

Software Engineering用户

发布于 2019-02-18 06:48:49

我建议您考虑使用事件聚合器模式来实现这一点。

事件聚合器作为许多对象事件的单一来源。它为许多对象的所有事件注册,允许客户机只向聚合器注册。..。当有很多对象是潜在的事件源时,事件聚合器是一个很好的选择。与其让观察者处理所有的注册问题,不如将注册逻辑集中到事件聚合器。除了简化注册之外,事件聚合器还简化了使用观察者时的内存管理问题。

票数 1
EN

Software Engineering用户

发布于 2019-11-15 09:49:11

“依赖注入”和“控制反转”出现在我的脑海中。也就是说,您有一些“容器”,它负责创建实例和注入依赖项。

在这种情况下,必须确保每个模型只创建一个实例。这通常可以通过“命名实例”来实现。

在“穷人”的场景中,你可以:

代码语言:javascript
复制
M1 m1 = new M1();
M2 m2 = new M2();
...
V1 v1 = new V1(m1, m2, m3);
... etc.
票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/380533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档