MVVMLight - 引用其他 ViewModel 的 ViewModel

本文关键字:ViewModel 其他 引用 MVVMLight | 更新日期: 2023-09-27 17:56:48

HI,

我正在使用 MVVMLight,我希望特定 VM 引用另一个 VM 的属性。目前,我使用ViewModelLocator.SomeViewModelStatic来做到这一点。有时,我也想使用另一个视图模型的方法。并且还使用 ViewModelLocator.SomeViewModelStatic 来使用其他 ViewModels 的方法。

这是视图模型之间通信的正确方式吗?

MVVMLight - 引用其他 ViewModel 的 ViewModel

在这种情况下,

我将首先将控制反转容器添加到应用程序(Autofac,Ninject甚至MEF(如果您熟悉它))并在所有ViewModels中注册(您可以手动执行此操作,或者相同的IoC容器可以在程序集中查找特定类)和服务.然后,我将实现ViewModelLocator以这样一种方式与 IoC 一起工作,以便由它创建 ViewModels(然后每个依赖项都将通过依赖注入来解决,您所要做的就是在 IoC 中注册所有内容)

通过使用 IoC,您还可以使用工厂方法,这些方法可以在 ViewModel 中为您创建实例。

有时我会构建一个虚拟机树。 例如:我通过将个人和爱好虚拟机添加到个人爱好虚拟机来创建个人爱好虚拟机。此类将包含跨其他两个 VM 的所有命令。

我犹豫是否要将爱好 VM 链接到个人 VM(或反向),因为如果没有个人 VM(或反向),使用爱好 VM 将变得更加困难。

同样,我创建视图:在此示例中,我可以为个人和爱好创建视图,并在构建个人爱好视图时使用这些视图。