从 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 功能;因此不需要虚拟机。
- 在接受目标 VM 的控件上创建依赖关系 属性,因此可以访问该方法。
- 在应用程序上创建静态 属性,其中将包含有问题的 VM 并将其作为静态调用访问。
MVVM 只是一种关注点分离,请记住 Xaml 最终将 compiled
转化为与代码一起执行的 C# 代码。无论您在代码中使用什么过程来访问方法和对象,都可以用于控制页面上的实例。
按照 Single Responsibility Principle 将获取记录的逻辑提取到知道如何执行的 class 并将该依赖项注入两个 ViewModel。
此方法可以被其他 classes 重复使用,可以轻松测试并且性能良好(与聚合事件提案不同)。
仍在摸索 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 功能;因此不需要虚拟机。
- 在接受目标 VM 的控件上创建依赖关系 属性,因此可以访问该方法。
- 在应用程序上创建静态 属性,其中将包含有问题的 VM 并将其作为静态调用访问。
MVVM 只是一种关注点分离,请记住 Xaml 最终将 compiled
转化为与代码一起执行的 C# 代码。无论您在代码中使用什么过程来访问方法和对象,都可以用于控制页面上的实例。
按照 Single Responsibility Principle 将获取记录的逻辑提取到知道如何执行的 class 并将该依赖项注入两个 ViewModel。
此方法可以被其他 classes 重复使用,可以轻松测试并且性能良好(与聚合事件提案不同)。