6

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

例如我们有一个情况:

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

4

2 回答 2

3

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

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

因此,您的 DoubleClick 命令将广播LoadItemMessage包含所选项目的 a Id,并且负责显示该项目的任何内容都将订阅接收LoadItemMessages并在听到 a 时加载该项目LoadItemMessage

如果您有兴趣,我的博客上有一篇关于Viewmodels 与 MVVM 之间通信的简短文章,它提供了事件系统的高级概述。

于 2012-07-16T16:27:59.240 回答
1

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

于 2012-07-16T16:02:39.100 回答