从 MVVM 中的子视图模型中引用方法和存储库

Referencing Methods and repositories from within sub viewModel in MVVM

仍在摸索 MVVM,并遇到了这个问题:

我有一个顶级 ViewModel,我们称它为 ModelLevel1。

我有一个属于它的子 ViewModel,一个控件用于它的所有绑定,我们称它为 ControlViewModel1。控件仅绑定到 ControlViewModel1。

在顶级 Viewmodel 中,有一个 Repository,以及一个通过 id 从 repository 获取记录的方法。

允许 ControlViewModel1 访问该方法以便它可以从存储库获取记录的最佳方法是什么?

干杯,

罗布

What is the best way to allow ControlViewModel1 to access the method so it can get a record from the repository?

恕我直言,控件是独立单元,具有依赖属性,可提供 VM 功能;因此不需要虚拟机。

  1. 在接受目标 VM 的控件上创建依赖关系 属性,因此可以访问该方法。
  2. 在应用程序上创建静态 属性,其中将包含有问题的 VM 并将其作为静态调用访问。

MVVM 只是一种关注点分离,请记住 Xaml 最终将 compiled 转化为与代码一起执行的 C# 代码。无论您在代码中使用什么过程来访问方法和对象,都可以用于控制页面上的实例。

按照 Single Responsibility Principle 将获取记录的逻辑提取到知道如何执行的 class 并将该依赖项注入两个 ViewModel。

此方法可以被其他 classes 重复使用,可以轻松测试并且性能良好(与聚合事件提案不同)。