我已经阅读了关于MVVM的MSDN文章,我并不是真的相信.如果模型已经实现了INotifyPropertyChanged/INotifyCollectionChanged,那么直接针对Model的View绑定有什么问题?似乎额外的ModelView引入了一些没有太多好处的代码.我错过了什么吗?
Ant*_*ien 12
在看到Jason Dolinger的精彩演讲之前,我对MVVM也有点怀疑.我推荐所有在WPF和MVVM中开始观看的同事.
Jason开始使用一个应用程序,一个人可以用"传统"方式编写,按钮点击由代码隐藏中的事件处理程序处理,然后更新UI的其他部分.使用WPF数据绑定,命令和Unity,他以一种更易于管理,封装,可读和可测试的MV-VM设计逐个转换它.太棒了.
要更直接地回答你的问题,即使你的模型已经包含所有内容而绑定到ViewModel似乎很愚蠢,你也常常需要对模型进行一点调整,而这只需要View.随着时间的推移,这些微小的变化将蔓延到您不属于您的模型中.它会让你的模型比它们应该更复杂.
当我有一个"拥有一切"的模型时,我经常做的是添加一个包含一个属性Model的ViewModel.然后在我的绑定中,我只是绑定到Model.Name,Model.Age等.这真的没有功夫.稍后,如果我只需要为View调整,我已经准备好了ViewModel类.这也使您的代码更直观,更易于理解.你不会想知道,在这种情况下我绑定了Model还是ViewModel?它始终是ViewModel.
INotifyPropertyChanged
并且INotifyCollectionChanged
不被考虑的唯一方面......在许多情况下,通过模型公开的数据也不会被认为易于使用.ViewModel的作用是充当模型和视图之间的适配器:以允许视图轻松绑定到它的形式公开数据,公开视图可以绑定的命令以执行操作...通常情况下,模型不会公开ICommand
s:如果是,那么模型是特定于WPF的,如果你想在其他非WPF应用程序中重用,这绝不是一件好事......
我已经使用MVVM几个月了,它让我的生活变得更加轻松:在代码隐藏文件中没有更多"意大利面条代码",责任明确分离,整体架构清晰......
我一直在使用MVVM进行2个项目,这里有一些我在ViewModel中做过的事情:
还有更多的事情要做(我忘了),这不适合模型本身,或者会使用户界面意大利面.
不要忘记,ViewModel使您能够对在UI中实现的无法测试的内容进行单元测试(例如命令).
最后,使用MVVM,我能够使用ViewModel轻松构建应用程序的命令行版本.
归档时间: |
|
查看次数: |
1685 次 |
最近记录: |