概要

Prism提供指导,帮助您更轻松地设计和构建,灵活且易于维护的客户端业务应用程序,这些应用程序可在Windows运行时,Windows Presentation Foundation(WPF)桌面,Silverlight或Windows Phone 7上运行。随着时间的推移而演变

使用体现重要架构设计原则的设计模式,例如关注点分离和松散耦合,Prism帮助您设计和构建体现重要的表示和业务逻辑的应用程序,这些应用程序通常与后端系统和服务交互,并使用分层架构,可以跨多个层进行物理部署。预计该应用程序将在其生命周期内发生重大变化,以响应新的需求和商机。简而言之,这些应用程序“经久耐用”,“为变革而打造”。不需要这些特性的应用程序可能无法使用Prism。

社区

WPF的Prism和Windows Runtime的SilverlightPrism拥有蓬勃发展的在线社区。

在这些社区网站上,您可以发布问题,提供反馈或与其他用户联系以分享想法。社区成员还可以帮助Microsoft计划和测试未来的产品,并下载其他内容,例如扩展和培训材料。

入门演示:

示例中用到了8个子模块, 所有的子模块统一继承 IModule接口, 实现Initialize方法。如下代码所示:

public class ModA : IModule
{ public ModA(IRegionViewRegistry registry)
{
this.regionViewRegistry = registry;
} private readonly IRegionViewRegistry regionViewRegistry; public void Initialize()
{
regionViewRegistry.RegisterViewWithRegion(Module.ModA.ToString(), typeof(Hello));
}
}

在启动项中的app.xaml中, 重写OnStartUp方法, 添加Bootstrapper类启动项。

 protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Bootstrapper bootstrapper = new Bootstrapper();
bootstrapper.Run();
}

Bootstrapper类的具体实现如下:

class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return this.Container.Resolve<MainWindow>();
} protected override void InitializeShell()
{
base.InitializeShell(); App.Current.MainWindow = (Window)this.Shell;
App.Current.MainWindow.Show();
} protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog(); ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
moduleCatalog.AddModule(typeof(ModA.ModA));
moduleCatalog.AddModule(typeof(ModB.ModB));
moduleCatalog.AddModule(typeof(ModC.ModC));
moduleCatalog.AddModule(typeof(ModD.ModD));
moduleCatalog.AddModule(typeof(ModE.ModE));
moduleCatalog.AddModule(typeof(ModF.ModF));
moduleCatalog.AddModule(typeof(ModG.ModG));
moduleCatalog.AddModule(typeof(ModH.ModH));
}
}

在Bootstrapper中, 通过重写了 ConfigureModuleCatalog方法 , 添加各个子模块的 IModule具体实现。

界面层:

模块显示区域设置RegionName, 也可以利用后台代码进行程序集加载的方式, 如此固定是演示其效果:

项目解决方案:

模块的实现示例代码, 通过RegisterViewWithRegion注册指定模块, 和向其指定的View页 :

项目源代码

Prism 框架基础架构的更多相关文章

  1. JavaWeb三大框架基础架构——CRUD的基础功能搭建

    @ 目录 介绍 注意 applicationContext.xml mybatis-config.xml web.xml 结束语 介绍 项目前端采用了bootstrap,后端是ssm三大框架 注意 这 ...

  2. b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释

    继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更新页面显示状态这种方式在运作的,从若干年前简单的ajax流行起来 ...

  3. 深入浅出node.js游戏服务器开发1——基础架构与框架介绍

    2013年04月19日 14:09:37 MJiao 阅读数:4614   深入浅出node.js游戏服务器开发1——基础架构与框架介绍   游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...

  4. Go RPC 框架 KiteX 性能优化实践 原创 基础架构团队 字节跳动技术团队 2021-01-18

    Go RPC 框架 KiteX 性能优化实践 原创 基础架构团队 字节跳动技术团队 2021-01-18

  5. ABP框架之——数据访问基础架构

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享阅读心得,希望我的文章能成为你成长路上的一块垫脚石,我们一起精进. 几乎所有的业务应用程序都要适用一种数据库基础架构,用来实现数据访问逻辑,以便从数 ...

  6. WPF Step By Step 系列-Prism框架在项目中使用

    WPF Step By Step 系列-Prism框架在项目中使用 回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Pr ...

  7. 项目中使用Prism框架

    Prism框架在项目中使用   回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Prism框架来构建基础的应用框架,并且 ...

  8. Prism框架在项目中使用

    本文大纲 1.Prism框架下载和说明 2.Prism项目预览及简单介绍. 3.Prism框架如何在项目中使用. Prism框架下载和说明 Prism框架是针对WPF和Silverlight的MVVM ...

  9. 【.NET6+WPF】WPF使用prism框架+Unity IOC容器实现MVVM双向绑定和依赖注入

    前言:在C/S架构上,WPF无疑已经是"桌面一霸"了.在.NET生态环境中,很多小伙伴还在使用Winform开发C/S架构的桌面应用.但是WPF也有很多年的历史了,并且基于MVVM ...

随机推荐

  1. [NOIP2015提高组]运输计划

    题目:BZOJ4326.洛谷P2680.Vijos P1983.UOJ#150.codevs4632.codevs5440. 题目大意:有一棵带权树,有一些运输计划,第i个运输计划从ai到bi,耗时为 ...

  2. man帮助

    man命令是Linux下的帮助指令,通过man指令可以查看Linux中的指令帮助.配置文件帮助和编程帮助等信息.

  3. minixml的安装教程

    最近想要实现对xml的解析,上网看到有很多库可以直接调用,例如minixml,tinyxml等,我选择了minixml(没有原因,纯属是因为这个找到了中文文档- -) 附上中文文档链接:https:/ ...

  4. 题解 P2431 【正妹吃月饼】

    假如做这道题想着用如下朴实的模拟,那肯定要WA至少4个点. #include <iostream> #include <cstdio> using namespace std; ...

  5. 洛谷—— P2934 [USACO09JAN]安全出行Safe Travel || COGS ——279|| BZOJ——1576

    https://www.luogu.org/problem/show?pid=2934 题目描述 Gremlins have infested the farm. These nasty, ugly ...

  6. POJ2485 Highways 【MST】

    Highways Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22842   Accepted: 10525 Descri ...

  7. Bloxorz I (poj 3322 水bfs)

    Language: Default Bloxorz I Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5443   Acce ...

  8. 推荐putty远程工具背景效果

    设置高亮显示及其行号 syntax on  set number 然后设置putty显示背景 如图 感觉这种效果比较舒适 推荐推荐

  9. nginx假死导致的问题回顾

    背景: 网络大致拓扑型 定位到一台Nginx节点于凌晨Timewait异常,等到6K. 进程异常,ngx_http_realtime_request模块错误 错误日志: 2017/02/24 00:0 ...

  10. OpenGL编程逐步深入(四)Shaders

    OpenGl 中的 Shader在一些中文书籍或资料中都被翻译为"着色器", 单从字面意思也看不出Shader到底是什么,Shader实际上就是一段代码,用于完成特定功能的一个模块 ...