【问题标题】:Pass information from one view model to another将信息从一个视图模型传递到另一个视图模型
【发布时间】:2010-12-11 21:23:44
【问题描述】:

我正在使用 M-V-VM 架构模式。

我希望我的程序有两个视图,View AView B。我用 View A 启动程序。当我双击 View A 中的一个项目时,程序会显示 View B

我应该如何构建我的程序以实现这一目标?

【问题讨论】:

    标签: c# wpf mvvm


    【解决方案1】:

    拥有一个像这样的 ViewModel:

    • 父视图模型
      • 子视图模型1
        • 可见
        • 切换 ChildViewModel 的 IsVisible 属性的命令
      • 子视图模型2
        • 可见

    并查看类似:

    • 父视图
      • 查看第 1 部分
        • 可见性绑定到 ChildViewModel1.IsVisible(使用 BooleanToVisibilityConverter)
        • 绑定到命令的按钮,用于切换可见性
      • 查看第 2 部分
        • 可见性绑定到 ChildViewModel1.IsVisible(使用 BooleanToVisibilityConverter)

    这应该可以解决您的问题。

    【讨论】:

    • 不可见的对象是否还保留在内存中?
    • 是的。正如你所说,它们只是不可见。
    • 另外一个问题,ChildViewModel2的作用是什么?
    • 当您组合多个小视图的视图时,例如,在一个窗口中,我们有一个标题栏、内容和状态栏,您可以为每个视图创建视图模型。在上面的例子中,我演示了一个由另外两个视图组成的视图。这反过来需要一个主视图模型,其中有两个子视图模型映射到适当的视图。
    【解决方案2】:

    您可能对 WPF Application Framework (WAF)BookLibrary 示例应用程序感兴趣。它显示了一个主/详细视图,其中包含两个单独的视图和两个单独的视图模型。此外,它还有一个模式对话框,其中包含一个用于“借给”操作的视图模型,该操作连接到所选书籍。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-18
      • 2014-04-03
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多