一个基于Prism的方案的介绍
对Prism的介绍园子里已经有很多人介绍了,这里就不再班门弄斧了。只着重介绍一下自己使用Prism构建的一个Wpf程序的设计方案,也请大家不吝指教。按照模式实践小组的介绍,Prism框架+MVVM模式也许是WPF程序开发的首选方案,因此我们在项目中使用了Prism4+MVVM模式+AcalonDock控件的设计方案。
1、Prism的使用
Prism的使用类似于Asp.net中的母版和用户控件的使用,首先有一个Shell作为母版,然后再母版中可以放入一些Region作为占位符,这些Region与一个用户控件关联,在Shell运行时会将这些用户控件动态添加到对应的Region所在的位置。这样做的一个明显好处是可以将界面划分为多个模块,几个模块开发时互不影响,有利于团队合作。不同模块之间的通信方式可参考本人的另一篇文章:http://www.cnblogs.com/wenjingu/archive/2011/11/19/2255398.html
2、AcalonDock控件的使用
AcalonDock控件是一套实现了Visual Studio风格界面的开源控件,http://avalondock.codeplex.com/,该控件的作者很负责,一直都在更新,目前2.0版已比较稳定。
使用该控件时请注意控制好窗口的切换,窗口的切换可能需要实现如下功能:
a、根据文档目录中文档的ID找到对应的文档窗口;
b、文档目录是树形结构,在目录中删除父文档时同时关闭父文档和子文档窗口;
c、一个文档根据操作的不同可打开不同的文档窗口,如添加和配置是两个不同的窗口。
上述功能可通过控件的ContentId来控制,AcalonDock的大部分控件都提供了这个属性,使用它来控制窗口的切换非常灵活方便。其次还有个小技巧,AcalonDock控件的Demo中有一个PaneViewModel类,我们可将其做为所有ViewModel的基类,这样的设计可带来不少好处,一个显而易见的好处是可统一所有窗口类型的使用方式。
3、MVVM模式
关于MVVM模式的使用可参考本人的以下两篇文章:http://www.cnblogs.com/wenjingu/archive/2011/11/01/2231429.html
和http://www.cnblogs.com/wenjingu/archive/2011/04/12/2013608.html