使用mvvm轻消息传递在非单例视图模型的多个实例之间进行通信



我有一个带有相应视图模型的父视图。该父视图包含具有自己视图模型的子控件。

在过去,对于这种父子类型的关系,我通常会让Parent视图模型包含对子视图模型的引用,然后子视图模型通过事件与父视图模型进行通信。

在与其他不相关的视图模型通信时,我使用了消息传递。

在我目前正在进行的项目中,我们正处于使用mvvm-light的早期阶段,有人使用消息服务创建了类似的父子关系,这意味着我们的耦合更加松散,这很好。但是,我们没有单例视图模型,所以我们可能会有客户A的父视图和子视图以及视图模型,然后再为客户B提供其他实例。如果子视图订阅了一条消息-该消息由父A广播,但子A和B都会收到,但我只希望子A做出响应。

这种情况的最佳实践是什么?我试图获得一些时间来比较消息传递方法与视图模型引用和事件方法,但由于其中一种方法主要通过绑定实现,我发现很难确定将秒表代码放在哪里。有人知道这两种方法之间是否有很大的性能差异吗。

我目前的想法是,我们应该使用包含子视图模型引用的Parent视图模型,并利用事件和绑定进行通信。或者有更好的方法吗?

我遇到了同样的问题,我正在使用事件在新视图和视图模型中解决它。

您还可以使用Messages来标识应该接收它的视图或视图模型(一种id或类似的东西8-)。

最新更新