Prism4.0CTP WPF上手实践:Get Started With Prism Library
2010-09-06 17:08
483 查看
在本实验中,你可以学到Prism的基础概念并应用到创建基于 Prism 类库的解决方案中,你可以以此作为创建一个WPF应用程序的起点。完成此实验之后,你将会学习到:
创建一个基于Prism类库的解决方案
创建和加载一个模块
创建一个视图并在外观窗口中显示
准备工作
本主题要求Prism 类库和Unity Application Block (Unity) 程序集:
Microsoft.Practices.Composite.dll
Microsoft.Practices.Composite.Presentation.dll
Microsoft.Practices.Composite.UnityExtensions.dll
Microsoft.Practices.ServiceLocation.dll
Microsoft.Practices.Unity.dll
Prism是作为源码发布的,你需要把它编译成Prism类库程序集 (Microsoft.Practices.Composite.dll, Microsoft.Practices.Composite.Presentation.dll, 和Microsoft.Practices.Composite.UnityExtensions.dll)
编译解决方案
在Windows资源管理器中,双击下列批处理文件在Visual Studio中打开 Prism 类库解决方案:Desktop & Silverlight - Open Composite Application Library.bat
生成解决方案。 Prism 类库程序集将被放到下列文件夹中 CAL\Desktop\<Project>\bin\Debug.
实验步骤Procedures
本实验包括以下任务:
任务1: 用Prism 类库创建一个解决方案
任务2:添加一个模块
任务3:添加一个视图
以下章节详述上述任务。
任务1:用Prism 类库创建一个解决方案
本任务中将带你窗机一个基于Prism类库的解决方案,作为一个开发WPF应用程序的起点。本解决方案包括推荐的Prism基础的实践及技术。按以下步骤来创建:
创建带外观Shell的项目。创建一个初始的VS解决方案然后添加一个WPF 项目,该项目作为创建基于Prism类库解决方案的基础。称为外观Shell项目。
设置外观Shell窗口。在本任务中, 需要设置Shell 窗口以解耦的方式来寄宿不同用户界面 (UI) 组件。
设置应用程序的Bootstrapper。需要编码来设置初始化应用程序。
下面来创建一个外观Shell项目,外观Shell项目是一个典型基于Prism类库的项目的基础—它是一个包含了程序启动代码的WPF项目,使用了启动引导器BootStrapper,放置了典型视图的主窗体。
开始创建一个外观Shell项目
在VS中,创建一个名为HelloWorld.Desktop新的基于C#的WPF项目(省略创建步骤)。
如下图所示:
HelloWorld项目
代码
构建运行解决方案。确认HelloWorldModule模块初始化,加断点到HelloWorldModule类中 Initialize方法 。应用程序启动后会命中断点。
任务3: 添加视图
本任务将添加一个视图到HelloWorldModule 模块中。视图 Views 是指包含可视化内容的对象。视图Views 通常是用户控件,但也不是必须。 按如下步骤来添加视图:
创建视图。本步骤通过创建可视化内容来实现一个视图,并编码管理视图中的UI元素。
在区域region中展现视图。 本步骤将获取一个引用到区域,再加入一个视图到其中。
下面描述如何创建一个视图View
在模块中添加一个WPF用户控件,命名为HelloWorldView.xaml。
修改HelloWorldView.xaml代码为:
保存文件。
区域管理器Region Manager
区域管理器服务负责维护区域的集合,为控件创建新区域。该服务实现了Microsoft.Practices.Composite.Regions.IRegionManager 接口。 一般,我们直接与服务进行交互,以解耦的方式按名称来定位区域,并添加视图到区域中。默认情况下,UnityBootstrapper在应用程序容器中注册一个服务的实例。就是说你在HelloWorld应用程序中以依赖注入的方式获得一个到区域管理器服务的引用。
下面的步骤解释了如何获取区域管理器的实例,然后添加一个HelloWorldView视图 到外观Shell窗体的主区域main Region。
如下所示:
打开 HelloWorldModule.cs文件。
添加using语句
创建一个只读的实例变量来保存到区域管理器的引用。
修改HelloWorldModule 类的构造函数通过构造器依赖注入的方式获取一个区域管理器regionManager 实例变量。在构造函数中加入一个Microsoft.Practices.Composite.Regions.IRegionManager的参数。代码如下:
在Initialize 方法中,调用RegionManager实例中的RegisterViewWithRegion 方法。 Initialize方法注册一个区域名名称和与该区域相关的视图类型到一个区域视图注册表中;该注册表用于保存和检索这些映射。
RegisterViewWithRegion方法有两个重载。当你想直接注册一个视图,可以使用带两个参数的第一个重载,参数分别为区域名和视图类型。代码如下:
在前述代码中用于UI构成的方法称为视图发现。使用该方法时,你需要指定视图和视图将被加载的区域。创建好一个区域之后,它会自动查找并加载相关的视图。
生成并运行程序,会看到如下图所示的程序。
Hello World 消息
创建一个基于Prism类库的解决方案
创建和加载一个模块
创建一个视图并在外观窗口中显示
准备工作
本主题要求Prism 类库和Unity Application Block (Unity) 程序集:
Microsoft.Practices.Composite.dll
Microsoft.Practices.Composite.Presentation.dll
Microsoft.Practices.Composite.UnityExtensions.dll
Microsoft.Practices.ServiceLocation.dll
Microsoft.Practices.Unity.dll
Prism是作为源码发布的,你需要把它编译成Prism类库程序集 (Microsoft.Practices.Composite.dll, Microsoft.Practices.Composite.Presentation.dll, 和Microsoft.Practices.Composite.UnityExtensions.dll)
注意: |
本实验使用的是Unity 容器Container,但你也可以使用Managed Extensibility Framework (MEF)和Prism类库。 |
在Windows资源管理器中,双击下列批处理文件在Visual Studio中打开 Prism 类库解决方案:Desktop & Silverlight - Open Composite Application Library.bat
生成解决方案。 Prism 类库程序集将被放到下列文件夹中 CAL\Desktop\<Project>\bin\Debug.
实验步骤Procedures
本实验包括以下任务:
任务1: 用Prism 类库创建一个解决方案
任务2:添加一个模块
任务3:添加一个视图
以下章节详述上述任务。
注意: |
本实验基于HelloWorld解决方案,可以通过运行文件Desktop only - Open QS - Hello World QuickStart.bat来打开它。 |
本任务中将带你窗机一个基于Prism类库的解决方案,作为一个开发WPF应用程序的起点。本解决方案包括推荐的Prism基础的实践及技术。按以下步骤来创建:
创建带外观Shell的项目。创建一个初始的VS解决方案然后添加一个WPF 项目,该项目作为创建基于Prism类库解决方案的基础。称为外观Shell项目。
设置外观Shell窗口。在本任务中, 需要设置Shell 窗口以解耦的方式来寄宿不同用户界面 (UI) 组件。
设置应用程序的Bootstrapper。需要编码来设置初始化应用程序。
下面来创建一个外观Shell项目,外观Shell项目是一个典型基于Prism类库的项目的基础—它是一个包含了程序启动代码的WPF项目,使用了启动引导器BootStrapper,放置了典型视图的主窗体。
开始创建一个外观Shell项目
在VS中,创建一个名为HelloWorld.Desktop新的基于C#的WPF项目(省略创建步骤)。
如下图所示:
HelloWorld项目
代码
protected override void ConfigureModuleCatalog() { base.ConfigureModuleCatalog(); ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog; moduleCatalog.AddModule(typeof(HelloWorldModule.HelloWorldModule)); }
注意: |
本例中模块直接被Shell项目引用。 这使得可以用typeof(Module)来添加模块到目录中。但是在模块类型暂时无效时模块也可以被加载到目录中。 在没有指定特定的初始化模式时,WhenAvailable初始化模式是默认模式。 |
任务3: 添加视图
本任务将添加一个视图到HelloWorldModule 模块中。视图 Views 是指包含可视化内容的对象。视图Views 通常是用户控件,但也不是必须。 按如下步骤来添加视图:
创建视图。本步骤通过创建可视化内容来实现一个视图,并编码管理视图中的UI元素。
在区域region中展现视图。 本步骤将获取一个引用到区域,再加入一个视图到其中。
下面描述如何创建一个视图View
在模块中添加一个WPF用户控件,命名为HelloWorldView.xaml。
修改HelloWorldView.xaml代码为:
<UserControl x:Class="HelloWorldModule.Views.HelloWorldView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid> <TextBlock Text="Hello World" Foreground="Green" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Calibri" FontSize="24" FontWeight="Bold"></TextBlock> </Grid> </UserControl>
保存文件。
注意: |
本实验为求简单,没有用 Model-View-ViewModel模式来创建视图。 |
区域管理器服务负责维护区域的集合,为控件创建新区域。该服务实现了Microsoft.Practices.Composite.Regions.IRegionManager 接口。 一般,我们直接与服务进行交互,以解耦的方式按名称来定位区域,并添加视图到区域中。默认情况下,UnityBootstrapper在应用程序容器中注册一个服务的实例。就是说你在HelloWorld应用程序中以依赖注入的方式获得一个到区域管理器服务的引用。
下面的步骤解释了如何获取区域管理器的实例,然后添加一个HelloWorldView视图 到外观Shell窗体的主区域main Region。
如下所示:
打开 HelloWorldModule.cs文件。
添加using语句
using Microsoft.Practices.Composite.Regions;
创建一个只读的实例变量来保存到区域管理器的引用。
private readonly IRegionManager regionManager;
修改HelloWorldModule 类的构造函数通过构造器依赖注入的方式获取一个区域管理器regionManager 实例变量。在构造函数中加入一个Microsoft.Practices.Composite.Regions.IRegionManager的参数。代码如下:
public HelloWorldModule(IRegionManager regionManager) { this.regionManager = regionManager; }
在Initialize 方法中,调用RegionManager实例中的RegisterViewWithRegion 方法。 Initialize方法注册一个区域名名称和与该区域相关的视图类型到一个区域视图注册表中;该注册表用于保存和检索这些映射。
RegisterViewWithRegion方法有两个重载。当你想直接注册一个视图,可以使用带两个参数的第一个重载,参数分别为区域名和视图类型。代码如下:
public void Initialize() { regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.HelloWorldView)); }
在前述代码中用于UI构成的方法称为视图发现。使用该方法时,你需要指定视图和视图将被加载的区域。创建好一个区域之后,它会自动查找并加载相关的视图。
注意: |
区域名必须与定义在区域中的属性RegionName值一致。 |
Hello World 消息
相关文章推荐
- Prism4.0CTP WPF上手实践:Get Started With Prism Library
- Prism4.0CTP Silverlight上手实践: Get Started with the Prism Library
- Get Started with the Enterprise Library Data Access Application Block
- FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS
- A project with an Output Type of Class Library cannot be started directly
- Get started with OpenCV on Android
- How to solve the problem "A project with an Output Type of Class Library cannot be started directly "
- FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS
- FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS
- Android Wear Preview - Get Started With Developer Preview
- Get started with MySql
- FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS
- FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS
- How do I get started with Node.js
- 【学习笔记】Get Started with MATLAB-Chapter03
- FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS
- Android TV -1.1- Get Started with TV Apps
- you try to use the STM32 Library examples with IAR 6.30.6 you get a loot of error
- At the to get started with component