WPF使用MVVM设计模式 问题
学习了下相关知识,知道view做展示,数据绑定;viewmodel做命令提供,绑定的数据model做业务逻辑大概流程是view生成命令然后通知viewmodel,view...
学习了下相关知识,知道
view做展示,数据绑定;
viewmodel做命令提供,绑定的数据
model做业务逻辑
大概流程是view生成命令然后通知viewmodel,view分配给model处理后,修改相关数据,然后因为数据后view绑定,所以自动修改ui界面。
现在有个问题,比如我点击页面A一个按钮,需要跳转到页面B,同时页面B一展示就需要数据支持。那么这个跳转到下个页面的代码,是写在view呢,还是写在viewmodel。大概怎么写。
求高手解答给小弟,有demo,小弟额外加100分。。。邮箱是914371502@qq.com 展开
view做展示,数据绑定;
viewmodel做命令提供,绑定的数据
model做业务逻辑
大概流程是view生成命令然后通知viewmodel,view分配给model处理后,修改相关数据,然后因为数据后view绑定,所以自动修改ui界面。
现在有个问题,比如我点击页面A一个按钮,需要跳转到页面B,同时页面B一展示就需要数据支持。那么这个跳转到下个页面的代码,是写在view呢,还是写在viewmodel。大概怎么写。
求高手解答给小弟,有demo,小弟额外加100分。。。邮箱是914371502@qq.com 展开
3个回答
展开全部
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的业务逻辑即可。
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的业务逻辑即可。
展开全部
应该写在view里,可以使用消息订制,然后由viewmodel发送消息给view。
prism比较大,可以使用mvvmlight,轻型的,或者自己实现类似的
prism比较大,可以使用mvvmlight,轻型的,或者自己实现类似的
参考资料: http://www.galasoft.ch/mvvm/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询