silverlight 学习笔记 (七):Prism的第一个应用
2012-02-19 13:54
495 查看
时隔很久,又回到了silverlight的学习中。前面对silverlight有了大致的了解,对采用MVVM模式开发有了大概的概念,简单总结下MVVM下的silverlight开发过程。
1、采用MVVM架构首先将View和ViewModel分离,使得设计者与开发者能够各司其职,在View中可以利用Binding实现对ViewModel的有关数据及事件的加载。但在实践中发现这个模式也会让我异常痛苦,由于View与ViewModel分离,在ViewModel中无法知道View是什么,这就带来了ViewModel与View通信的问题,虽然可以采用Messager实现双方的通信,但在View中需要Coding。当然最痛苦的莫过于窗体的调用,至今都想不出有什么好的办法去实现,无意中在Prism发现了有ChildWindow的调用方式,也让我决定学习Prism,毕竟Silverlight的开发框架主流是MVVM+PRISM+RIA
Servic。
2、在MVVM+RIA的开发过程中,可以使用EF工具从数据库中生成领域模型,然后使用domianservice实现对模型的操作,这极大减轻了我开发的工作量。但实际应用中又发现了问题,我在ViewModel中对Model的调用实际是调用的RIA生成的元数据模型,我并没有在此基础上重建Model,虽然节省了大量code,但由于使用底层的元数据模型,有很多数据验证是在元数据中进行标注的,而一旦需要更新元数据则需要重新标注元数据。所以现在也没法弄清楚是否需要在元数据基础上再增加一层Model层。
3、在MVVM模式中ViewModel需要处理应用逻辑,需要定义大量事件,所以ViewModel有时会显得异常复杂,如何能够简化?自然想到了组合模式,这也加强了对Prism的学习决心,虽然理解Prism将会是一个痛苦的过程。
先开始一个简单的Prism的过程:
1、创建Silverlight应用程序,项目添加Prism引用,将MainFrame改为Shell
添加Region
4、添加Bootstrapper 启动类,继承来自MefBootstrapper,重载MefBootstrapper的有关方法
protected override void ConfigureAggregateCatalog()
{
base.ConfigureAggregateCatalog();
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(this.GetType().Assembly));
}
到此,一个最简单的Prism的应用完成!
1、采用MVVM架构首先将View和ViewModel分离,使得设计者与开发者能够各司其职,在View中可以利用Binding实现对ViewModel的有关数据及事件的加载。但在实践中发现这个模式也会让我异常痛苦,由于View与ViewModel分离,在ViewModel中无法知道View是什么,这就带来了ViewModel与View通信的问题,虽然可以采用Messager实现双方的通信,但在View中需要Coding。当然最痛苦的莫过于窗体的调用,至今都想不出有什么好的办法去实现,无意中在Prism发现了有ChildWindow的调用方式,也让我决定学习Prism,毕竟Silverlight的开发框架主流是MVVM+PRISM+RIA
Servic。
2、在MVVM+RIA的开发过程中,可以使用EF工具从数据库中生成领域模型,然后使用domianservice实现对模型的操作,这极大减轻了我开发的工作量。但实际应用中又发现了问题,我在ViewModel中对Model的调用实际是调用的RIA生成的元数据模型,我并没有在此基础上重建Model,虽然节省了大量code,但由于使用底层的元数据模型,有很多数据验证是在元数据中进行标注的,而一旦需要更新元数据则需要重新标注元数据。所以现在也没法弄清楚是否需要在元数据基础上再增加一层Model层。
3、在MVVM模式中ViewModel需要处理应用逻辑,需要定义大量事件,所以ViewModel有时会显得异常复杂,如何能够简化?自然想到了组合模式,这也加强了对Prism的学习决心,虽然理解Prism将会是一个痛苦的过程。
先开始一个简单的Prism的过程:
1、创建Silverlight应用程序,项目添加Prism引用,将MainFrame改为Shell
xmlns:prism="clr-namespace:Microsoft.Practices.Prism.Regions;assembly=Microsoft.Practices.Prism"
添加Region
private void Application_Startup(object sender, StartupEventArgs e) { //this.RootVisual = new Shell(); Bootstrapper boot = new Bootstrapper(); boot.Run(); }
4、添加Bootstrapper 启动类,继承来自MefBootstrapper,重载MefBootstrapper的有关方法
protected override void InitializeShell() { base.InitializeShell(); App.Current.RootVisual = (UIElement)this.Shell; }
protected override void ConfigureAggregateCatalog()
{
base.ConfigureAggregateCatalog();
this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(this.GetType().Assembly));
}
到此,一个最简单的Prism的应用完成!
相关文章推荐
- silverlight 学习笔记 (七):Prism的第一个应用
- silverlight 学习笔记 (九):Prism与MVVM模式在silverlight中的应用
- SilverLight学习笔记--实际应用(一)(6):手把手建立一个Silverlight应用程序之创建数据校验类3
- SilverLight学习笔记--实际应用(一)(8):手把手建立一个Silverlight应用程序之应用自定义TextBox控件
- silverlight 学习笔记 (八):Prism中MEF的初步认识
- Silverlight学习笔记三 第一个Silverlight程序
- Android开发学习笔记(二)我的第一个Android应用
- Silverlight学习笔记十七BingMap(六)之获取图片系统的图片信息ImageryService的应用
- silverlight 学习笔记 (八):Prism中MEF的初步认识
- SilverLight学习笔记--实际应用(一)手把手建立一个Silverlight应用程序
- prism4学习笔记二:应用框架完成你的第一个prisam程序
- Hibernate学习笔记之手工创建第一个Hibernate应用
- SilverLight学习笔记--Silverligh之BackgroundWorker类的应用
- 传智播客struts2学习笔记(一) struts2的初步认识及第一个struts应用
- SilverLight学习笔记--实际应用(一)(1):手把手建立一个Silverlight应用程序之开始篇
- 【原创】Silverlight 4学习笔记——创建可自动更新版本的桌面应用
- Xcode学习笔记---如何使用Xcode中的storyboard构建你的第一个IOS应用
- SilverLight学习笔记--实际应用(一)(3):手把手建立一个Silverlight应用程序之删除记录
- Struts1学习笔记_1(第一个应用实例)
- NodeJS学习笔记整理(二)创建第一个应用