我注意到MVVM Light框架中ViewModelBase的每个子代都可以覆盖构造函数
public ViewModelBase(IMessenger messenger)
(架构说)是否可以使用IMessenger建模到ViewModel通信并在模型更改时更新ViewModels?
这意味着每个Model都有自己的IMessenger实例,每个viewModel都会订阅这些消息。
现在我正在使用这样的界面
public interface IModel
{
event EventHandler<ModelStatusChangedArgs> StatusChanged;
}
并且每种模型都有点......痛苦,我觉得我做错了。
答案 0 :(得分:1)
从技术上讲,你可以在任何你不知道谁可能会倾听或对此事件感兴趣的情况下使用它。
但是MVVM Light是一个MVVM框架,它实际上用于允许ViewModel的松散耦合。在模型中使用它最终会将模型绑定到MVVM框架。
但没有任何东西可以阻止您编写自己的Event Aggregator / Messaging系统(即Domain Events)。您还可以通过在MVVM Light的信使周围实现包装来从ViewModel中删除Messanger依赖项。
您通常希望保留此“图层”依赖项:
MVVM框架位于“应用层”中,模型不应该知道它。