【发布时间】:2015-09-30 20:21:11
【问题描述】:
根据来自 Brian Lagunas (YouTube Link) 的视频,我开始使用 Prism 6。我有点困惑,其中调用了 MainWindowViewModel 的构造函数。我几乎复制了他的项目,但找不到该部分。如果我在构造函数中设置断点,它永远不会到达那里。
他是不是在视频中没有展示什么?
【问题讨论】:
标签: mvvm constructor youtube prism
根据来自 Brian Lagunas (YouTube Link) 的视频,我开始使用 Prism 6。我有点困惑,其中调用了 MainWindowViewModel 的构造函数。我几乎复制了他的项目,但找不到该部分。如果我在构造函数中设置断点,它永远不会到达那里。
他是不是在视频中没有展示什么?
【问题讨论】:
标签: mvvm constructor youtube prism
如果您查看此演示文稿的 code,您会看到 Brian 正在使用 Prism 附加的依赖属性通过 ViewModelLocator 耦合视图和视图模型。
prism:ViewModelLocator.AutoWireViewModel="True"
在 33:00 左右的视频中,他完整解释了 ViewModelLocator 的工作原理:首先,它通过约定从视图名称构建视图模型名称。然后它通过 IoC 容器或反射将此名称解析为类型。 IoC 非常简单:给出一个类型或名称,它会给你一个实例。对于反射部分(当您在没有容器的情况下运行时),Prism 使用Activator type to create a new instance。
在 GitHub 上提供的最终代码中,Brian 使用 Unity 作为 IoC 容器。他的子视图(ViewA/ViewB)的自定义映射在引导程序中进行。由于 MainViewModel 没有自定义映射,因此会发生以下过程:
所以你不会在代码中看到 new xxxViewModel(),但它确实被创建了。这意味着当涉及到添加依赖项时,您在创建硬编码对象时拥有更大的灵活性。
【讨论】: