【问题标题】:How to send parameters between viewmodels using viewmodellocator如何使用 viewmodellocator 在视图模型之间发送参数
【发布时间】:2012-07-15 11:10:43
【问题描述】:

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

例如我们有一种情况:

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

【问题讨论】:

  • 您好,您是否使用任何 MessagingServices(如 Galasoft 或任何 Messaging)从 ViewModel 到 View 进行通信

标签: c# .net wpf mvvm viewmodellocator


【解决方案1】:

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

【讨论】:

  • 如果我对您的理解正确,您的方法可以奏效,但管理庞大的系统将非常困难。您能否提供一些代码示例以帮助我理解。谢谢
【解决方案2】:

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

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

因此,您的 DoubleClick 命令将广播一个包含所选项目 IdLoadItemMessage,而负责显示该项目的任何一方都将订阅接收 LoadItemMessages,并在听到 LoadItemMessage 时加载该项目。

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

【讨论】:

  • 谢谢,我对消息系统有点了解,但您的文章让事情变得简单
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多