【问题标题】:MVVM Page NavigationMVVM 页面导航
【发布时间】:2012-10-31 14:19:28
【问题描述】:

已开始遵循 mvvm 模式的 WPF 应用程序并遇到了问题。我有一个客户页面,其中包含许多搜索并返回客户列表。当我双击一条记录时,我希望能够导航到客户视图,以便用户可以查看/编辑详细信息。

在不使用 MVVMLight 或 WAF 或 PRISM 的情况下,这是否可能(因为我一直在努力完全进入 PRISM !!!)而不强制我的视图模型了解我的应用程序?

谢谢

【问题讨论】:

    标签: wpf mvvm navigation


    【解决方案1】:

    有些人使用Dependency Injection 以解耦的方式连接虚拟机和视图。看看Unity

    【讨论】:

      【解决方案2】:

      我会使用一个单独的/底层的外壳视图和视图模型,只包含你的 ui 布局的结构(一些用于定位导航、菜单、搜索或内容区域的网格)

      然后定位您的应用程序视图/控制外壳视图。 (也许有一些可见性绑定)

      shell viewmodel 的主要目的是协调你的用户界面的流程。例如,应该根据子控件的某些事件隐藏或显示哪些控件。

      您可以在搜索中使用事件处理程序,该事件处理程序已在 shell 视图模型中注册,以显示/隐藏您的不同内容视图。

      另一种方法可能是 ContentPresenter。

      【讨论】:

      • 干杯,我喜欢 shell 方法的声音,正在考虑类似的事情,我会让视图模型意识到“应用程序”并像这样钩入它的 navigationService。这听起来可行,你认为还是我应该创建一个导航服务包装器......?
      • 您好,这取决于您的整体架构。您可以使用观察者模式,它附加到您的导航服务和视图模型。基于消息的架构可能是导航推送消息和您的视图模型订阅它们匹配的消息类型的另一种可能性。在某些情况下,您还可以在视图模型中添加一些“应用程序”依赖项,但要注意“污染”它们太多。在大多数情况下,视图模型不需要知道它们的周围环境。 (这也使单元测试更容易。)
      猜你喜欢
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 2016-03-31
      相关资源
      最近更新 更多