WPF的mvvm的一点理解和实现


其实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类下相对合适(如果有的话)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值