Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用mvvm light消息在非单例viewmodels的多个实例之间进行通信?_C#_Silverlight_Mvvm_Mvvm Light - Fatal编程技术网

C# 使用mvvm light消息在非单例viewmodels的多个实例之间进行通信?

C# 使用mvvm light消息在非单例viewmodels的多个实例之间进行通信?,c#,silverlight,mvvm,mvvm-light,C#,Silverlight,Mvvm,Mvvm Light,我有一个具有相应viewmodel的父视图。 该父视图包含具有自己视图模型的子控件 在过去,通过这种父子关系,我通常让父视图模型包含对子视图模型的引用,然后子视图模型通过事件与父视图进行通信 在与其他不相关的viewmodels通信时,我使用了消息传递 在我目前正在进行的项目中,我们正处于早期阶段,使用mvvm light,有人使用消息传递服务创建了类似的父子关系,这意味着我们的耦合更加松散,这非常好。但是,我们没有单例视图模型,所以我们可能会为客户A提供父视图、子视图和视图模型,然后为客户B提

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

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

在与其他不相关的viewmodels通信时,我使用了消息传递

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

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


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

我也有同样的问题,我正在使用事件在新视图和视图模型中解决它


您还可以使用消息来标识应该接收它的视图或viewmodel(一种id或类似于8-)。

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


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

那么您有一个父视图模型及其子视图的引用了吗?那么,为什么您选择这种方式而不是消息传递呢?我有一种感觉,在这种情况下,这是一种正确的方式,但我正试图将一种方式而不是另一种方式的原因放在一起讨论。我这样做是因为我的应用程序有几个选项卡,同一个视图可以打开很多次,所以我认为有很多视图模型歧视其他人是很疯狂的查看viewmodels消息。那么您有一个父视图模型及其子视图模型的引用?那么,为什么您选择这种方式而不是消息传递呢?我有一种感觉,在这种情况下,这是一种正确的方式,但我正试图将一种方式而不是另一种方式的原因放在一起讨论。我这样做是因为我的应用程序有几个选项卡,同一个视图可以打开很多次,所以我认为有很多视图模型歧视其他人是很疯狂的查看视图模型消息。