原文:从PRISM开始学WPF(四)Prism-Module?

从PRISM开始学WPF(一)WPF?

从PRISM开始学WPF(二)Prism?

从PRISM开始学WPF(三)Prism-Region?

从PRISM开始学WPF(四)Prism-Module?

从PRISM开始学WPF(五)MVVM(一)ViewModel?

从PRISM开始学WPF(六)MVVM(二)Command?

从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator?

0x4Modules

Modules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。

既然Modules能够独立开发、测试、部署,那么如何告诉Shell(我们的宿主程序)去Load哪些Module,以怎样的形式Load这些Module呢?Prism为此提供了一个叫ModuleCatalog的东西。他用这个来管理Module。所以在App启动之初,需要创建配置一个ModuleCatalog。

先新增一个WpfApp项目,命名ModuleA,删除App.config和App.xaml,然后将outputType改为Class Library。

在Views文件夹下面新建一个用户控件ViewA

新增一个类ModuleAModule.cs实现IModule接口(每一个Module类都要实现这个接口,而每一个Module都要有这样一个类来对Module里的资源统一管理)

using ModuleA.Views;
using Prism.Modularity;
using Prism.Regions;namespace ModuleA
{public class ModuleAModule : IModule{IRegionManager _regionManager;public ModuleAModule(RegionManager regionManager){_regionManager = regionManager;}public void Initialize(){_regionManager.RegisterViewWithRegion("ContentRegion", typeof(ViewA));}}
}

他通过View Discovery的方式,将ModuleA的ViewA与_regionManager(这里是依赖注入)的Region"ContentRegion"进行关联。

那么,ModuleCatalog是怎样让Shell加载ModuleA的呢?,,ԾㅂԾ,,

代码

先在shell所在module添加ModuleA引用,然后:

Bootstrapper.cs中重写ConfigureModuleCatalog

        protected override void ConfigureModuleCatalog(){var catalog = (ModuleCatalog)ModuleCatalog;catalog.AddModule(typeof(ModuleAModule));}

啊妹子,炒鸡简单有没有?

配置文件

Bootstrapper.cs中重写CreateModuleCatalog

        protected override IModuleCatalog CreateModuleCatalog(){return new ConfigurationModuleCatalog();}

这表示,ModuleCatalog将从配置文件中创建。

App.config中添加了

<?xml version="1.0" encoding="utf-8"?>
<configuration><configSections><section name="modules" type="Prism.Modularity.ModulesConfigurationSection, Prism.Wpf" /></configSections><startup></startup><modules><module assemblyFile="ModuleA.dll" moduleType="ModuleA.ModuleAModule, ModuleA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" moduleName="ModuleAModule" startupLoaded="True" /></modules>
</configuration>

通过配置文件来配置ModuleCatalog就不需要添加ModuleA引用了

Directory

这个很尴尬,我调试一直不通过,辣鸡(●'◡'●)

LoadManual

Bootstrapper.cs中重写ConfigureModuleCatalog

        protected override void ConfigureModuleCatalog(){var moduleAType = typeof(ModuleAModule);ModuleCatalog.AddModule(new ModuleInfo(){ModuleName = moduleAType.Name,ModuleType = moduleAType.AssemblyQualifiedName,InitializationMode = InitializationMode.OnDemand});}

从PRISM开始学WPF(四)Prism-Module?相关推荐

  1. 从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator?

    从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator? 原文:从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator? 从PRISM开始学 ...

  2. 从PRISM开始学WPF(九)交互Interaction?

    原文:从PRISM开始学WPF(九)交互Interaction? 0x07交互 这是这个系列的最后一篇了,主要介绍了Prism中为我们提供几种弹窗交互的方式. Notification通知式 Pris ...

  3. WPF的Prism框架简介

    什么是Prism Prism是一个用于在 WPF.Xamarin Form.Uno 平台和 WinUI 中构建松散耦合.可维护和可测试的 XAML 应用程序框架. Prism是一个用于在WPF.Xam ...

  4. WPF PRISM开发入门一( 初始化PRISM WPF程序)

    原文:WPF PRISM开发入门一( 初始化PRISM WPF程序) 这篇博客将介绍在WPF项目中引入PRISM框架进行开发的一些基础知识.目前最新的PRISM的版本是Prism 6.1.0,可以在G ...

  5. 【转】WPF PRISM开发入门一( 初始化PRISM WPF程序)

    这篇博客将介绍在WPF项目中引入PRISM框架进行开发的一些基础知识.目前最新的PRISM的版本是Prism 6.1.0,可以在Github上获取PRISM的源码.这个系列的博客将选择PRISM 4. ...

  6. 一起学WPF系列(2):第一个WPF应用程序

    概述 Windows Presentation Foundation (WPF) 是下一代显示系统,用于生成能带给用户震撼视觉体验的 Windows 客户端应用程序.使用 WPF,您可以创建广泛的独立 ...

  7. 学Java四个月了,再回头看看。

    从去年决定学Java到现在(2007年3月31日)已整整四个月了,最深刻的一个感觉就是越学越多,自己知道的越少.另处一个体验就是自学太难了,没人指导,没人交流全靠自己摸索.我这样学,能有什么收获??? ...

  8. WPF 四种尺寸单位

    WPF 四种尺寸单位 原文:WPF 四种尺寸单位 像素 px 默认单位可以省略 厘米cm 英寸 in 点 pt 1in = 96px 1cm=96/2.42px 1pt=96/72px posted ...

  9. 1.辐射度学以及四个基本量

    辐射度学是什么? 本篇博客在理论基础上加入自己的初步理解,致力于形象结束辐射度学相关概念. 如果看完还是觉得不清楚,可以访问个人博客:https://zhaishengfu.github.io查阅辐射 ...

最新文章

  1. Stanford UFLDL教程 白化
  2. 如何在7分钟内黑掉40家网站?
  3. WIN5语音ic注意事项
  4. ECCV 2018 | Pixel2Mesh:从单帧RGB图像生成三维网格模型
  5. assign,copy,strong,weak,nonatomic的理解
  6. fedora7 常用软件安装
  7. java的css的块_JavaWeb--了解CSS
  8. dns服务 很多问题,后续再研究
  9. dnf剑魂buff等级上限_DNF:又是随机大坑?8月新护石装备可升级,但升3个需要刷半年...
  10. opencv 智能答卷识别系统(一)
  11. 95-30-050-java.util.ArrayList:Vector
  12. 18-黑马程序员------OC语言学习笔记---封装
  13. 创金合信基金公司:专户模式案例
  14. 在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具
  15. php errorcode,errorCode.php
  16. c语言中余数恒等于1,恒等于符号怎么打就是“≡”符号在windows里怎么打出来具体到搜狗里怎么打,麻烦说细点儿...
  17. 坚守梦想,善待苦难,等幸福来敲门
  18. Android Studio 连接夜神模拟器的方法
  19. 毕业设计 基于stm32的灯光控制系统 物联网
  20. Word里的图片显示不全,只显示最下面的一小部分的解决办法

热门文章

  1. 记一次MySQL字符集冲突导致的报错
  2. windows下一个,OracleServiceXXX和Oracle 关系实例
  3. 监控软件nagios之配置文件详解
  4. hihoCoder-1828 2018亚洲区预选赛北京赛站网络赛 A.Saving Tang Monk II BFS
  5. java多线程之锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁
  6. ffmpeg支持x264插件
  7. javascript运动的小框架
  8. linux基础命令介绍十四:定时任务
  9. Java CopyOnWriteArrayList
  10. Android依赖注入的实践——Dagger2