从Model中调用ViewModel相关代码

Invoking ViewModel related code from Model

例如,有时 Model 应该通知 ViewModel 显示消息框。有时模型应该更改 ViewModel 的状态。进行此类通知的正确方法是什么?

有什么有用的模式吗?

没有唯一的正确答案,这是一个设计决定。

可能的选择:

  1. 模型可以公开事件成员。
  2. 模型可以实现 IObservable<T> 接口或公开 IObservable<T> 成员。顺便说一下,Observable.FromEventPattern Method 允许将 .NET 事件转换为可观察序列。
  3. 模型可以使用回调接口。例如,只是为了演示这个想法:
interface INumberHandler
{
    void Handle(int number);
}

class NumberViewModel : INumberHandler
{
}

class NumberService
{
    public void Calculate(INumberHandler handler)
    {
        handler.Handle(9);
    }
}