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

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



        看了终归会有点了解,但是如果从没有接触过那还是没有实际的概念。在这个时候千万不要去通读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关系。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值