【问题标题】:Using mvvm-light messaging to communicate between multiple instances of non-singleton viewmodels?使用 mvvm-light 消息在非单例视图模型的多个实例之间进行通信?
【发布时间】:2012-08-25 11:19:33
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: c# silverlight mvvm mvvm-light


    【解决方案1】:

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

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

    【讨论】:

    • 所以你有一个父视图模型引用它的子视图?那么你为什么选择这种方法而不是消息传递呢?我有一种感觉,在这种情况下,这是正确的做法——但我试图将一个论点放在一起,说明为什么采用一种方法而不是另一种方法。
    • 我这样做是因为我的应用程序有多个选项卡,并且可以多次打开同一个视图,所以我认为有很多视图模型将它们的消息与其他视图模型消息区分开来是很疯狂的。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 2014-10-11
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多