如何使用viewmodellocator在视图模型之间发送参数

时间:2012-07-16 15:06:32

标签: c# .net wpf mvvm viewmodellocator

我正在使用MVVMLight创建一个WPF应用程序。我使用ViewModelLocator来创建视图模型。 我的问题是在它们之间传递参数。

例如我们有一个情况:

我们有一些包含某些实体的网格,当其中一个实体被双击时,我需要创建一个包含该实体细节的新视图。如何将所选项目ID发送到新视图的ViewModel?

2 个答案:

答案 0 :(得分:3)

通常,您会使用某种消息传递系统,例如Prism的EventAggregator或MVVM Light Messenger

这两个系统都让我想起了一个寻呼系统:应用程序的任何部分都可以广播消息,以及应用程序的任何部分并订阅监听消息。

因此,您的DoubleClick命令会广播包含所选项目LoadItemMessage的{​​{1}},并且负责显示该项目的任何内容都会订阅以接收Id并且只要它听到就会加载该项目LoadItemMessages

如果您有兴趣,我会在我的博客上发表一篇关于Communication between Viewmodels with MVVM的简短文章,该文章对事件系统进行了高级概述。

答案 1 :(得分:1)

这是ViewModelLocator的问题(将参数从View xaml传递给ViewModel)。您可以做的是在ViewModelLocator类中创建Type对象的属性参数或(对于SelectedItem类型)。将其绑定到Grid的SelectedItem,然后将其传递给新的ViewModel。我希望这将有所帮助。 NOte:如果您创建了object类型的属性,请不要忘记将其强制转换。