【发布时间】:2017-11-21 12:11:25
【问题描述】:
我是一名初级开发人员,最近开始研究 WPF/MVVM,现在经过几个月的努力,我想说我是一个可以很好地使用 MVVM 模式的半体面的 WPF 开发人员。现在我偶然发现了 Prism,它吸引了我,因为它提供了一些不错的功能。然而,在开始一个练习应用程序来测试 Prism 库之后,我遇到了一些在使用常规旧 WPF/MVVM 时从来没有问题的墙。 我的主要问题:
使用 Prism 在父视图模型和子视图模型之间进行通信的最佳方式是什么?
当我说通信时,我的意思是允许父视图模型(例如“地址簿 VM”)访问子视图模型(例如“Person VM”)及其所有属性...因为这就是我一直以来的情况教做。我会通过在父视图模型中拥有一个子视图模型属性然后简单地在视图中使用内容控件并将其数据上下文设置为子视图模型来实现这一点。由此我有一个层次结构,父可以访问子属性,或者子可以使用父等中的命令。
但是,当使用 Prism 实例化视图模型时,我使用 ViewModelLocator - 它会为我们找到视图模型并实例化它。使用此方法时,父级中没有引用视图模型的子级属性,这意味着父级无法轻松访问子级属性,反之亦然。有没有简单的解决方案?
现在,如果您读到的任何关于使用 Prism 或 MVVM 模式的内容听起来根本不正确,那么请通知我 - 我全神贯注。我很有可能以错误的方式处理所有事情。
【问题讨论】:
-
这里的场景是什么?为什么需要从父母和孩子那里访问孩子和父母的属性?它们中的每一个都可能有自己的视图,显示这些属性。