【发布时间】:2014-08-19 07:05:13
【问题描述】:
我对 WPF 4.5 中的 MVVM Light 有疑问。它不应该需要任何代码。我只是好奇当我发送消息以触发视图模型以将 ICollectionView 发送回原始视图模型时会发生什么。他们现在是两个单独的副本,还是我正在访问我要求的原件?如果我不是,你如何访问原始变量,这样你就没有第二个 ICollectionView 的“新”?
【问题讨论】:
标签: wpf scope mvvm-light messaging
我对 WPF 4.5 中的 MVVM Light 有疑问。它不应该需要任何代码。我只是好奇当我发送消息以触发视图模型以将 ICollectionView 发送回原始视图模型时会发生什么。他们现在是两个单独的副本,还是我正在访问我要求的原件?如果我不是,你如何访问原始变量,这样你就没有第二个 ICollectionView 的“新”?
【问题讨论】:
标签: wpf scope mvvm-light messaging
让我看看我是否理解你的问题:
您有两个 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);
换句话说:您选择在消息中发送的内容,因此您可以选择是发送对象的原件还是副本。
【讨论】: