从MVVM中的子viewModel中引用方法和存储库

时间:2015-05-05 15:08:59

标签: c# wpf mvvm

仍然感觉通过MVVM,并遇到了这个问题:

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

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

在顶级Viewmodel中,有一个Repository,以及一个从id获取存储库记录的方法。

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

干杯,

罗布

2 个答案:

答案 0 :(得分:0)

  

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

IMHO Controls是自包含单元,具有为VM功能提供服务的依赖属性;因此不需要VM。

  1. 在控件上创建一个Dependency属性,该属性接收目标VM,因此可以访问该方法。
  2. 在应用中创建一个静态属性,该属性将包含相关VM,并将其作为静态调用进行访问。
  3. MVVM只是一个关注点的分离,请记住Xaml最终将compiled转换为C#代码,这些代码在代码旁边执行。您在代码中使用的访问方法和对象的任何过程也可以转移到控制页面上的实例。

答案 1 :(得分:0)

Single Responsibility Principle之后提取将记录提供给知道如何操作并将该依赖注入两个ViewModel的类的逻辑。

这种方法可以被其他类重用,可以轻松测试并且具有高性能(与聚合事件提议不同)。