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

时间:2012-08-30 16:52:04

标签: c# silverlight mvvm mvvm-light

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

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

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

在我正在开发的项目中,我们正处于早期阶段并使用mvvm-light并且有人使用消息传递服务创建了类似的父子关系,这意味着我们更加松散耦合,是很棒的。但是,我们没有单例视图模型,因此我们可能会为客户A提供父视图和子视图以及其他实例,然后再为客户B提供其他实例。如果子视图订阅了消息 - 该消息是广播的通过父母A,但是孩子A和B都会收到它,但我只想让孩子A回复。

这种情况的最佳做法是什么? 我试图获得一些时间来比较消息传递方法与视图模型引用和事件方法,但由于一种方法主要通过绑定发生,我发现很难找出放置秒表代码的位置。有谁知道两种方法之间是否存在很多性能差异。

我目前的想法是,我们应该使用包含对childviewmodels的引用的Parent viewmodel来实现它,并利用事件和绑定进行通信。或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

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

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