应用架构

前边两章都是将的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.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应用。

演示地址:
http://dl.dropbox.com/u/432136/Samples/OperatingTableDemo/step-3/OperatingTableTestPage.html
申请Dropbox来host你的Silverlight
作者:Nasa 
文章出处:我和未来有约会 (http://nasa.cnblogs.com/) 
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。

参考资料:
http://www.cnblogs.com/Jax/archive/2009/05/25/1488797.html
http://www.cnblogs.com/Jax/archive/2009/05/30/1491921.html

建立可扩展的silverlight 应用框架 step-3相关推荐

  1. 建立可扩展的silverlight应用框架

    建立可扩展的silverlight应用框架 step-7 final (2011-09-07 14:04) 建立可扩展的silverlight 应用框架 step-6:整理导航模块"Left ...

  2. 建立可扩展的silverlight应用框架 step-4

    通过外部配置文件加载模块module 在上一节中为项目引入了"Prism"框架,并建立了一个Hello Prism做测试.这里要把项 目好好的整理一下.使其更加的合理和具有可扩展性 ...

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

    前六节的文章已经完全的记录这个项目的开发过程,其中第5节和第6节相隔的时间比较长 ,这期间我翻阅了大量的Prism官方文档以及网络上的资料,其实第6节的内容是很深.很连 贯的,以至于无法在一节里写完所 ...

  4. 使用代码生成建立可扩展序列化器(上)

    使用代码生成建立可扩展序列化器(上) 地狱门神 在很多程序中,配置文件和用户数据的保存和读取都是一个需要考虑的问题. 在以前,用户数据经常保存在INI文件中,后来出现了注册表,于是也有保存在注册表中的 ...

  5. DeepFaceLab: A simple, flexible and extensible face swapping framework 一个简单、灵活和可扩展的人脸交换框架

    DeepFaceLab: A simple, flexible and extensible face swapping framework 一个简单.灵活和可扩展的人脸交换框架 文章目录 DeepF ...

  6. MVC为Html对象建立一个扩展方法,使用自己的控件就像使用TextBox一样方便

    先看一下我想要的结果: 很容易它就是一个单选按钮组,当我后台为Html对象(HtmlHelper的一个实例,它被定义在System.Web.Mvc名称空间下的WebViewPage类,即它对于所有MV ...

  7. 游戏策划入门(4)——为你的游戏建立起一个完整的主框架

    为你的游戏建立起一个完整的主框架 "在游戏制作人或主策划脑海中,游戏应该总是完成时的样子." 在第二部分如何写一个项目建议书中,我们提到了游戏主框架由哪些部分构成.作为一个游戏的设 ...

  8. 使用phpize建立php扩展(Cannot find config.m4)

    php源码:/root/soft/php-5.3.4 php安装: /usr/local/php [root@ns root]# phpize Cannot find config.m4. Make ...

  9. 使用MEF构建可扩展的Silverlight应用

    "托管扩展性框架(Managed Extensibility Framework,简称MEF),是微软 .NET框架下为提高应用和组件复用程度而推出的,用于使组件能够最大化的重用 .使用ME ...

  10. github开源推荐:SuperSocket, 可扩展的 Socket 服务器框架

    1.简介 SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Net/Mono Socket 服务器程序框架.你无须了解如何使用 Socket, 如何维护 Socket 连接和 Socket ...

最新文章

  1. React + Threejs + Swiper 实现全景图效果
  2. Django-cookie的保存以及删除操作
  3. python读取csv某一列存入数组_python 读取.csv文件数据到数组(矩阵)的实例讲解
  4. spring下连接mysql_使用Spring连接mysql数据库
  5. 即将毕业的大学生,还在盲目跟风学Python吗?某位科大教授有话说
  6. Python学习入门10:零基础如何开始学习 Python?从小白变大牛!
  7. d触发器q端的输出波形_如果把D触发器的输出Q'反馈连接到输入D,则输出Q的脉冲波形的频率为CP脉冲频率f的 。...
  8. OpenCV-图像处理(33、基于距离变换与分水岭的图像分割)
  9. oauth2基本概念
  10. 三人表决器程序c语言,“三人表决器”逻辑功能PLC程序设计(有梯形图 指令表)...
  11. 第5章 电容元件与电感元件
  12. java-commons-pool2--(1)--连接池详解
  13. an怎么做淡入_切换场景的淡入淡出效果
  14. 【Autojs教程】03-Autojs 控件学习 | 淘宝关注店铺取消实战
  15. 台式计算机没有声音图标,电脑突然没有声音怎么解决 电脑喇叭图标不见了怎么办...
  16. PyCharm代码格式化插件
  17. 2017百度之星资格赛—1003度度熊与邪恶大魔王
  18. 奥鹏福建师范计算机应用作业,奥鹏福建师范【计算机应用基础】在线作业一、二答案在末尾...
  19. 关于易语言卡退的问题
  20. lmbench内存延迟测试代码分析

热门文章

  1. HBuilder实现WiFi调试Android
  2. MySQL游标(cursor) 定义及使用
  3. Leetcode刷题记录[java]——717 1-bit and 2-bit Characters
  4. gulp-rev-append md5版本号
  5. Hbase启动hbase shell运行命令报Class path contains multiple SLF4J bindings.错误
  6. chrome下使用JS检测浏览器是否使用开发者工具
  7. Enumerator yielder.yield 与 Proc.yield 区别
  8. python基础之socket
  9. 如何高效设计游戏——从抽奖模型到圆桌算法
  10. asp:树型select菜单