其实wpf用了蛮久了,MVVM也部分的用过,但没有认真考虑过MVVM的实现。这里理解加一点总结。
首先,MVVM是Model-----View-----ViewModel.
其中定义参考 http://www.cnblogs.com/sirkevin/archive/2012/11/28/2793471.html
其中一个观点很重要:ViewModel层的主要责任是表现逻辑和状态,即ViewModel层是连接View层和Model层的。Model层的一些业务逻辑的状态是需要通过ViewModel层暴露给View层来反映给软件使用者的。
因此,model是用来写业务逻辑的,而viewmodel值表现逻辑和状态,跟展示紧密相关。
由此,来看一下实现。
第一个问题是是否需要新建model类?即mvvm适用场合,能不能把model类直接优化掉?
ViewModel是和UI上所有需要展示的数据的控件一一绑定的,而model是和你的数据源对应的,区别在多表,一对多的关系。
有一篇很长但是写的很好的文章 :http://www.cnblogs.com/n-pei/archive/2010/08/10/1796173.html
收录在msdn杂志中的原版:https://msdn.microsoft.com/en-us/magazine/ff798279.aspx
以下来自文章中的观点:
并非每个 Model 属性都要有 ViewModel 代理属性,但是每个需要在 View 中显示的 Model 属性通常都有一个代理属性。
还有一篇文章英文的,介绍MVVM改天看 https://blogs.msdn.microsoft.com/johngossman/2005/10/08/introduction-to-modelviewviewmodel-pattern-for-building-wpf-apps/
第二个问题是,command的实现
如果说要把UI绑定的东西分类,那么数据是一类,命令的是一类。一些控件的命令是有业务逻辑的,所以command写道model类下相对合适(如果有的话)。