您的位置:首页 > 其它

【WPF】MVVM实践(上)

2010-07-21 14:31 211 查看
在最近完成的一个模块项目开发中,第一次尝试使用所谓的MVVM模式进行开发。主要参考了以下几篇文章:

WPF Apps With The Model-View-ViewModel Design Pattern

Simplifying the WPF TreeView by Using the ViewModel Pattern

Introduction to Attached Behaviors in WPF

全英的,又是“新”概念,所以一开始折磨了几天都没太大的效果,而项目工期又有限,以致项目经理都建议我不要搞这玩意,速战速决了(返工吗?呃……)。最终自己顶住压力,加班加点把它应用到模块中,周末都带回家里研究,最终任务按期完成,并颇有收获。

首先来看看这个小模块的项目文件:



命名空间(包)按逻辑思路重新排列一下:

BLL
Model
DataAccess
ViewModel
AttachBehavior
(View)

其中DataAccess 下的类才算真正的逻辑处理操作,这里的BLL不过是做点数据库的获取、更新(就是写了一堆SQL语句)。

DataAccess 下的ReportServerRepository.cs、ReportGroupRepository.cs,以及ViewModel下的ReportServerViewModel.cs、ReportGroupViewModel.cs 、AllReportServersViewModel.cs、ReportGroupTreeViewModel.cs是几大主要“功臣”,大多数操作都由它们负责。

View层的xmal,绑定的数据源,最终都是对应到一个个xxViewModel,所以对于涉及到单个数据单位的操作——比如ReportServer时,对其进行的数据(Property)编辑、保存操作(Command),都把实现逻辑写到了xxViewModel中。而对于界面上一次性获取大批量数据绑定TreeView或ListBox控件上的,则是用ARSVM或RGTVM作为绑定源。

而可能令人感到混乱的是,View(xmal文件)的DataContext其实是RXWindowViewModel。所以其实这里套用了很多层!

下次通过分析模块中的ReportServer编辑功能,走一遍代码流程,看看MVVM是如何通过VM从V到M的操作的。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: