我对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
实例被传递给ViewModelpublic AllCustomersViewModel(CustomerRepository customerRepository)
。现在viewModel包含了一些不应该包含的东西,特别是它可以强制CustomerRepository
重新加载等。
在我看来,这违反了MVVM模式,我认为ViewModel只应包含对模型文件的引用,所有实用程序类和方法以操作模型文件的方式应该在其他地方。
我是对还是错?将提供一些模型服务的类(可以重新加载/刷新模型等)传递给ViewModel是否可以?也就是说,所谓的服务层
应该放在哪里,将其放在ViewModel中是否可以?