MVVM Light变量和Messaging

时间:2014-08-19 07:05:13

标签: wpf scope mvvm-light messaging

我对WPF 4.5中的MVVM Light有疑问。它不应该需要任何代码。我很好奇当我发送一条消息来触发一个viewmodel将BACK发送到原始viewmodel ICollectionView时会发生什么。它们现在是两个单独的副本,还是我访问我要求的原件?如果我不是,你如何访问原始变量,以便你不会有新的'第二个ICollectionView?

1 个答案:

答案 0 :(得分: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);

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

相关问题