【问题标题】:How do I open a new window from a view model and pass parameters to it in MVVM?如何从视图模型打开一个新窗口并在 MVVM 中将参数传递给它?
【发布时间】:2012-10-24 09:03:14
【问题描述】:

我有一个带有列表的窗口,单击列表条目将显示一个新窗口以显示该项目的详细视图

在 MVVM 中最简洁的方法是什么?我想只做一个 container.Resolve().Show() 并让 Unity 创建所有依赖项,但只是调用 Show() 听起来不是 MVVM。我应该创建某种类型的 WindowService 管理器类还是会有点矫枉过正?代码调用Show()可以接受哪一层代码?

其次,我如何将参数(例如 CustomerID 和 ProductID)从初始视图模型传递到将附加到正在显示的新窗口的新视图模型?

【问题讨论】:

    标签: wpf mvvm prism


    【解决方案1】:

    我使用this 方法与 MVVM 进行对话。

    我现在要做的就是从我的视图模型中调用以下内容。

    var result = this.uiDialogService.ShowDialog("Dialogwindow title goes here", dialogwindowVM);
    

    【讨论】:

      【解决方案2】:

      我通常更喜欢创建一个 NavigationService 来处理实例化窗口和视图模型并将视图模型设置为数据上下文。然后你可以在你的父视图模型中调用它并且它们被解耦。

      【讨论】:

      • 我也有类似的想法——这似乎最符合 MVVM 的精神。但是我如何将参数从一个视图模型传递到另一个?
      • 这是一个有趣的困境。这取决于您认为这两种观点需要有多大的凝聚力。最直接的方法是将 ID 传递给导航方法。
      • 记住很多时候最好的模式只是在事后才出现。
      • 我可以看到 NavigationService 的价值,它肯定会在这里用一块石头杀死两只鸟。甚至可以直接使用 Prism NavigationService,因为它已经有一个方便的基于 URI 的视图导航系统
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多