Spiga

建立可扩展的silverlight 应用框架 step-3

2010-02-06 23:04 by 王喆(nasa), 2867 visits, 收藏, 编辑

应用架构

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

首先在项目主页下载最新版本的Composite。
我这里下载的是《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.Practices.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应用。

演示地址:
 
作者:Nasa 
文章出处:我和未来有约会 (http://nasa.cnblogs.com/
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。
 
参考资料:
Add your comment

9 条回复

  1. #1楼 别爱上哥,哥只是个传说!      2010-02-06 23:19
    还行!
     回复 引用 查看   
  2. #2楼 傻样精英      2010-02-08 12:29
    还有没有step4?
     回复 引用 查看   
  3. #3楼 dino623      2010-02-08 16:13
    能否詳細解釋下Composite
     回复 引用 查看   
  4. #4楼[楼主] 王喆(nasa)      2010-02-08 16:14
    @傻样精英
    有的 正在继续写
     回复 引用 查看   
  5. #5楼[楼主] 王喆(nasa)      2010-02-08 16:15
    @dino623
    你好,园子里已经有朋友写过了。 他主要写的wpf的,这里我就不再重写了。我也是主要去学习他写的,自己再写了一个silverlight的。
    你可以看看
    http://www.cnblogs.com/Jax/archive/2009/05/25/1488797.html
     回复 引用 查看   
  6. #6楼 dino623      2010-02-08 16:19
    @王喆(nasa)
    thx
     回复 引用 查看   
  7. #7楼 双宇      2010-02-09 08:33
    你好,很高兴能再次看到SL框架的文章,本人英文不好,期待楼主讲解MEF
    http://blogs.msdn.com/brada/archive/2009/07/20/simple-example-using-managed-extensibility-framework-in-silverlight.aspx
    谢谢
     回复 引用 查看   
  8. #8楼 Silenus-G      2010-03-29 14:18
    “为项目添加之前准备的几个DLL的引用”
    这个bat是不是标记错了?用你源码里的可以,你标出来的bat生成后找出来的那几个都引不进去
     回复 引用 查看   
  9. #9楼 Never      2011-01-26 10:10
    请教下,在加载模块时,显示的加载进度条是如何实现的,谢谢!
     回复 引用 查看