我应该将哪些参数传递给我的ViewModel的构造函数?

jav*_*red 5 c# wpf mvvm

我是WPF/MVVM的新手,并试图理解这种模式.我正在探索这个MVVM应用程序http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

作者创建Customer存储在类Model文件夹CustomerRepository类存储在DataAccess文件夹中

CustomerRepository包含'做东西'的方法,例如static List<Customer> LoadCustomers(string customerDataFile)我们不能说这CustomerRepository是纯模型文件,它也是一种实用文件.

从另一只手CustomerRepository存储重要数据readonly List<Customer> _customers;,我们知道我们应该在模型中存储这样的数据!

好吧,我会说这CustomerRepository是混合的东西 - 它是一个模型文件,里面包含一些实用方法.

问题是CustomerRepository实例传递给ViewModel public AllCustomersViewModel(CustomerRepository customerRepository).现在viewModel包含它不应该的东西,特别是它可以强制CustomerRepository重新加载东西等.

在我看来这是MVVM模式,我认为ViewModel应该只包含对模型文件的引用所有实用程序类和操作模型文件的方法都应该在其他地方.

我是对还是错?是否可以将在模型上提供某些服务的类(可以重新加载/重新刷新模型等)传递给ViewModel?即所谓的所谓service layer,在ViewModel中可以使用它吗?

Pav*_*lov 1

AFAIK,MVVM 模式有两种广泛的处理方法。

第一个,你似乎更熟悉,包括 4 个组件:View、Model、ViewModel 和 Controller。这里,ViewModel 只包含 UI 逻辑,并向 Controller 公开事件,用于 ViewModel 和 Model 之间的同步。

文章中使用的第二种,只是将ViewModel和Controller合并为ViewModel。顺便说一句,Martin Fowler 描述了这个案例:http://martinfowler.com/eaaDev/PresentationModel.html

在我看来,选择取决于个人喜好。