【WPF】MVVM实践(上)

在最近完成的一个模块项目开发中,第一次尝试使用所谓的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.csReportGroupRepository.cs,以及ViewModel下的ReportServerViewModel.csReportGroupViewModel.cs AllReportServersViewModel.csReportGroupTreeViewModel.cs是几大主要“功臣”,大多数操作都由它们负责。

 

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

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

 

下次通过分析模块中的ReportServer编辑功能,走一遍代码流程,看看MVVM是如何通过VMVM的操作的。。。
posted @ 2010-07-21 14:31  Glife  阅读(1286)  评论(1编辑  收藏  举报