说明

使用的安装包有:

  • 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. 101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联——方案二

    101 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 05 通过方法实现学生类与专业类关联--方案二 本文知识点:通过方法实现学生类与 ...

  2. centos 7 安装docker 常用指令

    什么是docker l  使用最广泛的开源容器引擎 l  一种操作系统级的虚拟化技术 l  依赖于Linux内核特性:Namespace和Cgroups l  一个简单的应用程序打包工具 docker ...

  3. Win10下设置GOPATH系统变量,查看go env没有变化

    前言 最近在学习go语言,下载了golang安装包安装之后,使用go env查看环境变量,发现GOPATH已经指向默认的目录了 按照安装手册去系统变量设置了一下GOPATH,指向自定义目录 再来运行一 ...

  4. .NET Standard 来日苦短去日长

    作者:Richard 翻译:精致码农-王亮 原文:http://dwz.win/Q4h 自从 .NET 5 宣贯以来,很多人都在问这对 .NET Standard 意味着什么,它是否仍然重要.在这篇文 ...

  5. 扩展、接管MVC都不会,还会用Spring Boot?

    持续原创输出,点击上方蓝字关注我 目录 前言 Spring Boot 版本 如何扩展MVC? 如何自定义一个拦截器? 什么都不配置为什么依然能运行MVC相关的功能? 如何全面接管MVC?[不推荐] 为 ...

  6. 使用phpword获取doc中的表格数据

    1. 首先确定使用phpword是可以读取word文档中表格里面的数据, 使用的phpword版本0.17.0 2.理解word文档内容的存储逻辑规则(这里只做简单概述) 一般做博文喜欢直接贴代码,直 ...

  7. selenium常用操作学习笔记

    一,弹窗处理(推荐文章:https://blog.csdn.net/huilan_same/article/details/52298460) selenium提供switch_to方法定位弹窗的对话 ...

  8. 用cgroup限制内存以防止Linux因内存用尽卡死

    Linux在内存用尽的情况下,整个界面,包括tty和ctrl-alt-F1都会卡住难以响应.虽然Linux内核有OOM Killer机制杀掉吃内存的进程,但经常内存用尽时连OOM Killer都无法动 ...

  9. go 正则 爬取邮箱代码

    package main import ( "net/http" "fmt" "io/ioutil" "regexp" ...

  10. Linux命令之Hash缓存表

    Hash缓存表 系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将 ...