为了账号安全,请及时绑定邮箱和手机立即绑定

请问在MVVM模式下事件是怎么处理的?

/ 猿问

请问在MVVM模式下事件是怎么处理的?

慕容森 2019-07-24 19:15:53

在MVVM模式下事件是怎么处理的


查看完整描述

3 回答

?
慕哥6287543

业务逻辑是应该放在 M层 但是按照目前比较流行的模型来看, 能够在VM中访问的M都是DTO 也就是贫血的Model数据 业务逻辑都是包装在 Service 层 也就是一般所说的 BusinessLayer. 这样无论本地的业务还是远程业务都可以比较方便的调用。 View->VM--> Services 这样的结构 Service Contract +DTO 基本上就是 MVVM相对的M层了

查看完整回答
反对 回复 2019-07-29
?
波斯汪

VIEW:你的界面,就是XAML
VIEWMODEL:界面的业务逻辑,也就是以前的XAML.CS文件
MODEL:你的业务数据模型

根据上面的定义,你应该写在VIEWMODEL上。两个VIEW之间的数据传递在MVVM中一律通过DataContext属性进行,DataContext在MVVM中至关重要!
MVVM的本质就是绑定,只是MVVM要求更严格,最正统的MVVM要求删除XAML的所有控件编程ID。

自己写MVVM非常容易出错,我推荐用simplemvvmtoolkit.(项目在codeplex中)。它有两个比较好用的地方,一个是属性改变通知用lamda表达式,这样当你用重构工具修改模型属性后PropertyChange里的属性名也会跟着改,避免了直接写属性字符串引起的错误。
还一个是它提供一个全局事件总线,DataContext数据交换要求两个ViewModel之间存在引用关系,但实际应用时不总是这样(如日志收集器界面)。通过这玩意可以多个ViewModel订阅事件,任意一个ViewModel发布事件其它订阅事件的ViewModel就能处理事件了。

simplemvvmtoolkit一个小问题就是用它的EventToCommand去绑定UserControl没效果,这一点mvvmlight(也在codeplex里)的RelayCommand就没问题,所以我做项目时一般是这两个库一起用。

通过simplemvvmtoolkit写MVVM你可以先把View画好、写出ViewModel和Model的模型定义,模型绑定全部可通过blend用鼠标完成,不许动用一下键盘。绑定完了只要专心填ViewModel的业务逻辑即可。

查看完整回答
反对 回复 2019-07-29

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信