【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的操作的。。。
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的操作的。。。
相关文章推荐
- WPF新手实践2:MVVM Light Toolkit(二、创建MvvmLight项目)
- 基于WPF的MVVM架构实践
- WPF新手实践5:MVVM Light Toolkit(五、Command)(转)
- WPF中的MVVM模式:WPF中MVVM模式原理分析与实践
- WPF自定义控件与样式(14)-轻量MVVM模式实践
- WPF新手实践6:MVVM Light Toolkit(六、MustToggleIsEnabled)(转)
- WPF新手实践1:MVVM Light Toolkit(一、下载与安装)
- WPF新手实践7:MVVM Light Toolkit(七、Messenger)(转)
- WPF中MVVM模式原理分析与实践(转)
- WPF新手实践8:MVVM Light Toolkit(八、Messenger进阶)(转)
- C# 实践之 基于WPF的mvvm模型,使UI独立,逻辑可测
- WPF新手实践1:MVVM Light Toolkit(一、下载与安装)(转)
- WPF之MVVM小任务实践
- WPF中MVVM模式原理分析与实践[转]
- WPF新手实践2:MVVM Light Toolkit(二、创建MvvmLight项目)(转)
- WPF新手实践3:MVVM Light Toolkit(三、ViewModel和View)
- WPF新手实践4:MVVM Light Toolkit(四、Model、ViewModel和View)
- WPF新手实践5:MVVM Light Toolkit(五、Command)
- WPF新手实践7:MVVM Light Toolkit(七、Messenger)
- WPF新手实践6:MVVM Light Toolkit(六、MustToggleIsEnabled)