你好,
首先,我觉得MVVM light是一个轻量级的mvvm框架,它的出现方便我们用MVVM的模式去写程序,但是不代表你开发所有的程序都需要用到MVVM light,有些时候用code-behind方式去实现,明显比用MVVM 实现来的简单方便,那就没有必要用MVVM.
其次,要理解MVVM,你首先要对WPF中的绑定、命令等基础内容需要有一个完整的认识,因为MVVM这种模式是和绑定配合使用的,如果你开发的程序还是使用传统的方式,而没有在XAML上使用Binding,那么我觉得你使用MVVM完全是没有意义的。
>>"到底是 Model 实现 INotifyPropertyChanged 接口还是 ViewModel 来实现?"
INotifyPropertyChanged接口,你需要知道,不管是Model实现这个接口,还是ViewModel实现接口,归根结底,它们实现这个接口是为了什么? 答案是:当你修改绑定的属性的值时,能够及时的通知UI。所以,我觉得很好理解,无论你的业务逻辑写在哪里,需要实现INotifyPropertyChanged接口的是与XAML绑定属性的那个类或者是与XAML绑定的集合所在的那个类。
>>" IDataService 接口这种方式获取数据,也就是说 Model 层里的 DataItem.cs 是只包含一堆属性的纯数据模型,无业务逻辑,而使用独立的 DataService.cs 类专门用于获取 Web 数据。"
可以这么理解,单独的将业务逻辑封装成一个类,完全符合面向对象的思想,方便代码重用,这点完全没有问题。
另外,我觉得你之所有会有这样的迷惑,是你还没有完全理解WPF中使用绑定的好处,另外要想使用MVVM light,对于命令的理解也是必不可少的,我想学习mvvm light的最好途径,还是试着看一些英文的文档,因为国内的中文文章有些写的不完整,对初学者学起来有一定难度,多看一些人家用MVVM写的例子,看得多了,你会发现很多好的例子都不是完全遵循MVVM所描述的那种方式来写,有很多只是用了MVVM light中的一部分功能,比如说Messenger类,Command类中的一些已经封装好的方法等。
这里给你提供一些我学MVVM light时看过的一些资料,全部是英文资料,需要你慢慢消化:
http://www.galasoft.ch/mvvm/
MVVMLight-Using-Two-Views
Using MVVM Light in WPF for Model-View-ViewModel implementation
Best Regards,
Xavier Eoro
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey.