【问题标题】:MVVM Light variables and MessagingMVVM 灯光变量和消息传递
【发布时间】:2014-08-19 07:05:13
【问题描述】:

我对 WPF 4.5 中的 MVVM Light 有疑问。它不应该需要任何代码。我只是好奇当我发送消息以触发视图模型以将 ICollectionView 发送回原始视图模型时会发生什么。他们现在是两个单独的副本,还是我正在访问我要求的原件?如果我不是,你如何访问原始变量,这样你就没有第二个 ICollectionView 的“新”?

【问题讨论】:

    标签: wpf scope mvvm-light messaging


    【解决方案1】:

    让我看看我是否理解你的问题:

    您有两个 ViewModel 调用 VM1 和 VM2。

    VM1 可以像这样监听来自 VM2 的消息:

      Messenger.Default.Register<ICollectionView>(this, HandleCollectionReceived);   
      private void HandleCollectionReceived(ICollectionView collection)
      {
        // do stuff with the collection
      }
    

    然后VM2可以像这样将原始集合发送到VM1:

    Messenger.Default.Send(MyCollectionView);
    

    或者这样的副本:

    var MyCopy = new CollectionView(MyCollectionView);
    Messenger.Default.Send(MyCopy);
    

    换句话说:您选择在消息中发送的内容,因此您可以选择是发送对象的原件还是副本。

    【讨论】:

    • 好的,我确实将已经在 vm2 中声明的集合发送到 vm1。我将vm1中的一个变量设置为集合的值,因为变量原始名称不是我想要的名称。
    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    相关资源
    最近更新 更多