说明

使用的安装包有:

  • Prism 6.3
  • Unity 4.0.1

基于Prism框架的应用程序都包含一个主项目和若干功能模块,主项目负责启动时初始化工作,包括依赖注入容器,定义Shell等等。功能模块则负责单独的逻辑功能。下面使用helloworld说明。

1. 安装

新建WPF项目,使用4.5 版 .NET Framework。安装如下安装包。

Install-Package Prism.Unity

2. 编写主项目

2.1 定义Shell

删除MainWindow.Xaml文件,并新增Shell.Xaml文件。Shell是主界面,包含一个多个域(Region),每个域是一个容器,可存放一个或多个自定义组件,这里使用ItemsControl实现。定义域时需要指明域名称。

xaml
<Window x:Class="HelloWorld.Shell"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:prism="http://prismlibrary.com/"
Title="Hello World" Height="300" Width="300">
<ItemsControl Name="MainRegion" prism:RegionManager.RegionName="MainRegion" />
</Window>
behind code
using System.Windows;

namespace HelloWorld
{
/// <summary>
/// Interaction logic for Shell.xaml
/// </summary>
public partial class Shell : Window
{
public Shell()
{
InitializeComponent();
}
}
}
2.2 创建Bootstrapper

所谓Bootstrapper可以简单理解为创建Prism项目的引导程序,该引导程序需要做多项工作,这里不详细讲述。BootStrapper初始化。

using System.Windows;
using Microsoft.Practices.Unity;
using Prism.Unity; namespace HelloWorld
{
class HelloBootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return this.Container.Resolve<Shell>();
} protected override void InitializeShell()
{
base.InitializeShell(); App.Current.MainWindow = (Window)this.Shell;
App.Current.MainWindow.Show();
} protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
}
}
2.3 启动Bootstrapper

在App.xaml.cs中重写程序启动事件处理句柄,在原有处理上追加实例化Bootstrapper,启动。

public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Bootstrapper bootstrapper = new Bootstrapper();
bootstrapper.Run();
}
}

3. 模块化开发

Prism最大好处就是模块化开发,为此需要先定义一个模块。

3.1 定义功能模块

每一个模块包含一个或多个View,为了演示方便这里定义一个view。步骤:

  • 新增一个HelloWorldModule项目
  • 安装Prism.Unity包
  • 在新增项目新建Views文件夹,并在Views文件夹中添加HelloWorldView.Xaml文件
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>
behind code
namespace HelloWorldModule.Views
{
/// <summary>
/// Interaction logic for HelloWorldView.xaml
/// </summary>
public partial class HelloWorldView : UserControl
{
public HelloWorldView()
{
InitializeComponent();
}
}
}

3.2 模块封装

定义好view以后我们需要将Views封装为一个模块,方法是定义模块 类并实现接口IModule。

using Microsoft.Practices.Prism.Modularity;
using Microsoft.Practices.Prism.Regions; namespace HelloWorldModule
{
public class HelloWorldModule : IModule
{
private readonly IRegionViewRegistry regionViewRegistry; public HelloWorldModule(IRegionViewRegistry registry)
{
this.regionViewRegistry = registry;
} public void Initialize()
{
//将view注册在MainRegion域
regionViewRegistry.RegisterViewWithRegion("MainRegion", typeof(Views.HelloWorldView));
}
}
}

4. 导入模块

前面定义的模块是独立项目,为了让主项目找到该模块,需要将独立模块导入主项目中,方法是在模块目录添加该模块,Prism会找到该模块。在bootstrapper中使用如下代码导入。

//添加命名空间
using Microsoft.Practices.Prism.Modularity;
//将模块注册至模块目录
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog(); ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
moduleCatalog.AddModule(typeof(HelloWorldModule.HelloWorldModule));
}

0 quickstart的更多相关文章

  1. Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN

    快速入门 使用 Spark Shell 进行交互式分析 基础 Dataset 上的更多操作 缓存 独立的应用 快速跳转 本教程提供了如何使用 Spark 的快速入门介绍.首先通过运行 Spark 交互 ...

  2. Apache Spark 2.2.0 中文文档

    Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN Geekhoo 关注 2017.09.20 13:55* 字数 2062 阅读 13评论 0喜欢 1 快速入门 使用 ...

  3. (转) [it-ebooks]电子书列表

    [it-ebooks]电子书列表   [2014]: Learning Objective-C by Developing iPhone Games || Leverage Xcode and Obj ...

  4. Shiro —— Spring 环境下的使用

    一.使用 1.搭建基础环境 (1)导入 Spring 和 Shiro 的 Jar 包 正常导入 spring jar包 导入日志包 log4j-1.2.15.jar slf4j-api-1.6.1.j ...

  5. HDFS简介【全面讲解】

    http://www.cnblogs.com/chinacloud/archive/2010/12/03/1895369.html [一]HDFS简介HDFS的基本概念1.1.数据块(block)HD ...

  6. Python3+Flask安装使用教程

    一.环境配置 当前我的开发环境是Miniconda3+PyCharm.开发环境其实无所谓,自己使用Python3+Nodepad都可以.安装Flask库: pip install Flask 二.第一 ...

  7. java框架之Shiro-安全/权限框架

    准备 简介 Apache Shiro 是 Java 的一个安全(权限)框架. Shiro 不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境. Shiro 可以完成:认证.授权.加密.会 ...

  8. Spark升级--在CDH-5.15.1中添加spark2

    一.环境准备 jdk-1.8+scala-2.11.X+python-2.7 二.创建目录 mkdir -p /opt/cloudera/csd 修改权限 chown cloudera-scm:clo ...

  9. 005 Spark快速入门的简单程序案例

    参考:官网的quick start http://spark.apache.org/docs/1.6.0/quick-start.html 这里只是在shell命令行中简单的书写一些命令,做一个简单的 ...

随机推荐

  1. 9.23 T1 tree

    题意描述: 给你一个长度为 \(n\) 的序列,让你从中选出 \(k\) 个数组成一个集合,定义这个集合的极限高度为\(a_i...a_k\) 的最大值. 让你求所有的集合极限高度 之和对 \(100 ...

  2. GAN网络之入门教程(五)之基于条件cGAN动漫头像生成

    目录 Prepare 在上篇博客(AN网络之入门教程(四)之基于DCGAN动漫头像生成)中,介绍了基于DCGAN的动漫头像生成,时隔几月,序属三秋,在这篇博客中,将介绍如何使用条件GAN网络(cond ...

  3. 正式班D5

    2020.10.10星期六 正式班D5 一.上节课复习 1.硬盘分类 ​ 1.机械磁盘 ​ io时间=平均寻道时间+平均延迟时间 ​ buffer:写缓冲区 ​ cache:都缓存 ​ 2.固态硬盘 ...

  4. win7如何安装maven

    1.Maven的简介Maven是一个项目管理工具,主要用于Java平台的项目构建.依赖管理和项目生命周期管理. 当然对于我这样的程序猿来说,最大的好处就是对jar包的管理比较方便,只需要告诉Maven ...

  5. 使用docker搭建redis服务器记录

    #mkdir /home/redishome#mkdir /home/redishome/data#chmod -R 777 /home/redishome把redis.conf传到/home/red ...

  6. unix socket接口

    socket 创建套接字文件: #include <sys/socket.h> // 成功返回非负套接字描述符,失败返回-1 int socket(int domain, int type ...

  7. pytest文档53-命令行实时输出错误信息(pytest-instafail)

    前言 pytest 运行全部用例的时候,在控制台会先显示用例的运行结果(.或F), 用例全部运行完成后最后把报错信息全部一起抛出到控制台. 这样我们每次都需要等用例运行结束,才知道为什么报错,不方便实 ...

  8. 这里有40条提升编程技能小妙招!还有TIOBE 7月份的编程语言排行榜

    如何提高编程技能?恐怕很多开发者思考过这个问题.最近,拥有将近 15 年开发经验的软件工程师 Kesk -*- 写了一篇博客,列举了 40 条对其职业生涯有所帮助的事项.   或许,通过以下 40 个 ...

  9. hdu6376 度度熊剪纸条-----01背包

    题目:度度熊有一张纸条和一把剪刀.   纸条上依次写着 N 个数字,数字只可能是 0 或者 1.     度度熊想在纸条上剪 K 刀(每一刀只能剪在数字和数字之间),这样就形成了 K+1 段.   他 ...

  10. swoft 事件监听和触发 打印sql日志

    需求 打印出swoft的所有sql日志到控制台或者文件 只要打开listener 下面 Dbranlisten.php 里面最后一行注释即可,swoft已经帮我们实现好了 ____ _____ ___ ...