注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

水木的博客

唱好人生中的每一场戏

 
 
 

日志

 
 

prism4学习笔记二:应用框架完成你的第一个prisam程序  

2011-08-24 18:00:33|  分类: Silverlight之Pri |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在开始之前,我们还是先看一下prism创建程序的过程图,有道是一图胜千言:

prism4学习笔记二:应用框架完成你的第一个prisam程序 - 水木 - 水木的博客
        看了终归会有点了解,但是如果从没有接触过那还是没有实际的概念。在这个时候千万不要去通读prism4.htm文件,先找到附录里面的动手实验,按着那个做一遍,大概13步:
——————————————————————————————————————————————————————
1.创建一个silverlight项目;
2.添加项目对Microsoft.Practices.Prism.dll/Microsoft.Practices.Prism.UnityExtensions.dll./Microsoft.Practices.Unity.Silverlight.dll/Microsoft.Practices.ServiceLocation.dll的引用
3.添加shell:就将系统默认的mainpage.xaml文件重命名为shell,记住.cs文件里面的类名一并修改了;
4.在shell.xaml中添加一个region:<itemcontrol name="mainregion" regions:regionmanager.regionname="mainregion"/>,region的xlm名称空间要先引用xmlns:Regions="http://www.codeplex.com/prism"

5.添加一个继承自unitybootstrapper的bootstrapper类,引入prism框架dll,覆写createshell,Initializeshell,Configuremodulecatalog;
using Microsoft.Practices.Prism.Modularity;
using Microsoft.Practices.Prism.UnityExtensions;
using Microsoft.Practices.Unity;
protected override DependencyObject CreateShell()
{
    return Container.Resolve<Shell>();//用shell创建一个实例
}
protected override void InitializeShell()
{
    base.InitializeShell();
    Application.Current.RootVisual = (UIElement)this.Shell;//shell接管了主页面
}
protected override void ConfigureModuleCatalog()
{
    base.ConfigureModuleCatalog();//将来总调度就在这里注册模块的
}
6.修改app.xaml,指向bootstrapper
private void Application_Startup(object sender, StartupEventArgs e)
{
    Bootstrapper bootstrapper= new Bootstrapper();
    bootstrapper.Run();
}
至此F5运行,我们可以看见一个空的页面,因为我们只创建了一个空的容器;还没有用module来实现一些功能;
7.继续创建一个新项目:silverlight类库,添加其对microsoft.practices.prism.modularity的引用;
8.将新项目中默认的class1.cs修改为你需要的类名,比如hellwowordmodule,并使之继承于imodule,同样需要引用using Microsoft.Practices.Prism.Modularity;最后还要添加一个空的Initialize方法;
9.按结构添加 views/services/controllers等文件夹,只是意思一下,你可以添加也可以不添加,只要你明白真正的含义就是了;
10.接下来将这个类库加载到应用程序,因为这个module是要被主程序调用的,在你的silverlight项目中添加对这个类库的引用;
11.最后翻过去改bootstripper的configuremodulecatalog方法,实现在实例中注册module,注册有好多方法,动态的、静态的、xml文件的、xaml文件的,先不管这些,闭着眼跟在说明书走;我们前一节举例剧场的时候,说到过运营部门,下面的这个注册就相当于签了几份合同:张学友演出、程冠希演出、....,然后登出了广告海报。
protected override void ConfigureModuleCatalog()
{
    base.ConfigureModuleCatalog();
    ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
    moduleCatalog.AddModule(typeof(HelloWorldModule.HelloWorldModule));
}
12.在views目录下添加一个silverlight控件,上面随便写点东西,比如:我是一只小小鸟。
13.打开类库中的hellwowordmodule.cs,添加一个构造函数,并在其Initiallize方法中使用RegisterViewWithRegion方法将helloworldview返回的内容注册到mainregion中;
  using Microsoft.Practices.Prism.Regions;
private readonly IRegionManager regionManager;
public HelloWorldModule(IRegionManager regionManager)
{
  this.regionManager = regionManager;
}
public void Initialize()
{
    regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.HelloWorldView));
}
————————————————————————————————————————————————————

        最后运行程序我们可以看到结果:我是一只小小鸟。如果你鸟毛没见一根,就得回去一步一步检查你的程序了。
        但凡只要你成功动手做一遍,基本上就了解使用prisma框架开发的流程和他的原理,剩下来的就是专研,每天诵读prism4.htm10遍,另外把压缩包中的那几个帮助文档看一遍,权当学习英语了。
       手动实验做完后,我们就梳理一下这个实例,自己去总结出三大步:
          1.如何实现Bootstrapper的接管和shell的加载,建造出一个影剧院(shell),并建立剧场(region);
          2.如何通过Bootstarpper中重写InitializeModules方法加载Module:引入了各种演出剧目(module);
          3.如何实现module中的view和region建立关系,也就是那个剧目在那个剧场演出?这个是在每个module中实现IModule接口的Initialize方法,在其中通过regionManager.RegisterViewWithRegion方法来完成region和module view的mapping关系。

 

转自:http://hi.baidu.com/samson_wu/blog/item/24fed2d13b2b9d219b50275c.html

  评论这张
 
阅读(1258)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017