首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >-> ViewModel通信中的MVVM光信使

-> ViewModel通信中的MVVM光信使
EN

Stack Overflow用户
提问于 2015-03-09 16:47:37
回答 1查看 742关注 0票数 1

我注意到MVVM框架中的ViewModelBase的每个子类都可以覆盖构造函数

代码语言:javascript
复制
public ViewModelBase(IMessenger messenger)

从架构上讲,使用IMessenger对ViewModel通信建模并在模型更改时更新ViewModels可以吗?

这意味着每个模型都有自己的IMessenger实例,每个viewModel都订阅这些消息。

现在我使用的接口如下

代码语言:javascript
复制
public interface IModel
{
  event EventHandler<ModelStatusChangedArgs> StatusChanged;
}

对于每一种型号都是..。我觉得我做错了什么。

EN

回答 1

Stack Overflow用户

发布于 2015-03-10 18:02:54

从技术上讲,您的可以将它用于您不知道谁可能会倾听或对该事件感兴趣的每一种情况。

但是MVVM是一个MVVM,它实际上用于允许ViewModels的松散耦合。在模型中使用它将最终将模型绑定到MVVM框架。

但是,没有什么可以阻止您编写自己的事件聚合器/消息传递系统(即域事件)。您还可以通过实现MVVM信使的包装来从ViewModels中删除Messanger依赖项。

您通常希望保留这种“层”依赖关系:

  • 基础设施(ASP.NET,持久性)应该取决于您的域/业务层
  • 您的业务层不应该依赖任何其他层。这包含应用程序的核心及其所有的域逻辑(业务规则/逻辑)。
  • 您的应用程序层(ViewModels)将仅依赖于您的域/业务层。ViewModels只包含表示逻辑
  • 表示层(视图)将仅依赖于您的ViewModels。视图应该不知道业务层(MVVM中的模型)。

而MVVM框架驻留在“应用层”中,模型不应该知道它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28947436

复制
相关文章

相似问题

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