zoukankan      html  css  js  c++  java
  • 建立可扩展的silverlight应用框架 step3

    应用架构

    前边两章都是将的UI方面的知识。这里UI结构已经有了,现在要引人一个开发架构: Composite  “Prism”。

    前期准备工作

    首先在项目主页下载最新版本的Composite。

    http://compositewpf.codeplex.com/

    http://www.microsoft.com/downloads/details.aspx?FamilyID=387c7a59-b217-4318- ad1b-cbc2ea453f40&displaylang=en

    我这里下载的是《Composite Application Guidance for WPF and Silverlight - October 2009》

    解压安装

    编译项目

    将以下的5个dll找出以作备用

    至此前期准备工作完成。

    改造项目

    1.为项目添加之前准备的几个DLL的引用

    2.重命名MainPage.xaml为Shell.xaml

    3.打开Shell.xaml.cs文件将MainPage类重命名为Shell

    4.在XAML视图中修改x:Class 与之相对应的后端代码关联

    5.添加Region

    在Shell.xaml中添加Prism的命名空间

    xmlns:Regions="clr- namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.P ractices.Composite.Presentation"

    这样子就可以为Region添加Prism中的依赖属性了。

    在图中红色区域的Grid中添加一个ItemControl控件

    6.添加Bootstarpper,在项目中新建立一个Bootstrapper继承自UnityBootstrapper的类 。

    7.修改App.xaml,在app.xaml中修改其启动方法。

    至此,项目改造告一段落。下来为下图中的红色区域制作一个HelloWorld来看看效果。

    8.新建一个名为OperatingTableTestModule的silverlight类库。删除app.xaml、 mainpage.xaml两个文件并添加对“Microsoft.Practices.Composite.dll”和 “Microsoft.Practices.Composite.Presentation.dll”的引用。

    9.在项目中新建立一个文件夹“Views”,并在这个文件夹下创建一个 HelloPrismView.xaml的文件。在其中绘制如下的图案。

    10.在项目中添加一个名为HelloPrismModule的类,它派生自IModule接口。

    在Initialize方法中,将MainRegion与Views中的HelloPrismView相关联。

    11.再回到OperatingTable项目中,添加其对OperatingTableTestModule项目的引用。找 到Bootstarpper类,修改其GetModuleCatalog方法,使其加载刚才新建立的项目模块。

    编译项目 运行

    ok,这里看到了OperatingTableTestModule项目中的View替换了原先的ItemsControl。

    扩展

    这里看到了Hello Prism并没有自适应容器,而是根据自身的大小来做的布局。这里有一 个小小的技巧。

    为ItemsControl加一个Grid模板就可以做到。

    再次运行

    如图,他自适应了容器大小,更加的美观了。

    应用了Prism架构我们可以把界面拆分成若干小的模块,更加方面的以扩展模块的方式来 开发silverlight应用。

    演示地址:

    http://dl.dropbox.com/u/432136/Samples/OperatingTableDemo/step- 3/OperatingTableTestPage.html

    Powered By D&J (URL:http://www.cnblogs.com/Areas/)
  • 相关阅读:
    mvn打包不执行测试
    sprngmvc静态资源
    java.lang.NoSuchMethodError: java.util.Map.putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/la
    Lombok annotation handler class lombok.javac.handlers.HandleData failed on G
    linux 一些命令(2)
    linux 空间释放,mysql数据库空间释放
    mysql 日志清理
    idea svn performing vcs refresh 很长时间
    装饰页面decorators.xml
    拦截器的使用,配置手机浏览器访问的h5页面
  • 原文地址:https://www.cnblogs.com/Areas/p/2169765.html
Copyright © 2011-2022 走看看