【问题标题】:MVVM ViewModel to View CommunicationMVVM ViewModel 到视图通信
【发布时间】:2012-03-28 08:11:06
【问题描述】:

我是 MVVM 新手,正在开发一个应用程序,我想在我的应用程序中完成一些事情

  1. 我的视图模型应该能够启动一个新视图。 场景(命令绑定到按钮,某个进程决定做什么,根据结果,我需要显示 View1 或 View2)

  2. 成功操作后,我的视图模型应显示一个消息框,如果打开了多个视图,则消息必须提示正确的视图(与哪个视图模型绑定)。

我想从我的视图模型中提供某种通知以供查看。请指引我正确的方向。

谢谢

【问题讨论】:

标签: c# wpf mvvm


【解决方案1】:

您可能想尝试其中的一些 mvvm 框架。我个人喜欢 mvvm light,因为它可以在 silverlight 和 WPF 中工作,而且很容易使用 http://mvvmlight.codeplex.com/(无从属关系)

以下是一些主要框架的不错比较/对比:What framework for MVVM should I use?

大多数框架都有一个消息传递系统,它提供了在视图和视图模型之间以及视图模型之间发送更新的能力。大多数框架还提供处理 MVVM 消息框的预制消息(我知道 MVVM Light 可以)。

为了在 WPF 中处理视图之间的切换,我使用 DataTemplates 和内容控件

在视图 .xaml 我添加 <ContentControl Content="{Binding ActiveViewModel}" /> 这是显示注入视图的空间。 ActiveViewModel 是包含所选视图模型的视图模型的对象。

在 ResourceDictionary 中我添加如下内容:

  <DataTemplate DataType="{x:Type ViewModelNameSpace:ViewModelClassName}">
    <ViewNameSpace:ViewClasName/>
  </DataTemplate>

最后,在 ViewModel 中,我将 ActiveViewModel 属性(设置为通过 INotifyPropertyChanged 通知 UI 更改)设置为我想使用的 viewModel 实例。

ActiveViewModel = new ViewModelClass();

【讨论】:

    【解决方案2】:
    1. 您应该创建一个新视图并导航到它。
    2. 您可以在 MVVM Light 框架中使用消息传递。从您的 ViewModel 向 View 发送消息。例子: http://chriskoenig.net/2010/07/05/mvvm-light-messaging/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-14
      • 1970-01-01
      • 2011-01-31
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多