Prism 框架概念

prism was the code name for the guidance formally known as the Composite Application Guidance for WPF and Silverlight. For brevity and conciseness, and due to customer demand, this guidance is now referred to simply as Prism.

Prism用来开发具有多个界面、丰富交互以及数据可视化特点的WPF和Silverlight的应用程序的具体呈现和商业逻辑。

Prism 框架应用目的

模块间解耦

UI与后台开发解耦

程序设计初期减少功能耦合

Prism 框架详情

框架示意图

框架模块介绍

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

Module Catalog:在Prism中,Module Catalog指明了要Load哪些Module,和用什么样的顺序去Load这些Module。

Shell:Shell是宿主应用程序(host application),modules将会被load到Shell中。Shell定义了应用程序的整体布局和结构,而不关心寄宿其中的Module,Shell通常实现通用的application service和infrastructure,而应用的逻辑则实现在具体的Module中,同时,Shell也提供了应用程序的顶层窗口。

Views:Views是应用中展现特定功能的视图,它展现UI、定义交互行为,并且通过数据绑定的方式与ViewModel进行交互。

Regions:Regions是应用程序UI的逻辑区域,它很像一个PlaceHolder,Views在Regions中展现,很多种控件可以被用作Region:ContentControl、ItemsControl、ListBox、TabControl。Views能在Regions编程或者自动呈现,Prism也提供了Region导航的支持。

Navigation:Prism支持两种导航:state-based导航和view-switching导航。

EventAggregator:组件通常要和其它的组件或者服务进行通信。为此,Prism提供了 EventAggregator组件,这个组件实现pub-sub事件机制,允许一些组件发布事件,另一些组件去订阅事件而无需两个组件之间的引用。

Dependency Injection container:Prism使用依赖注入模式来管理组件之间的依赖,Prism被设计使用Unity、Mef等依赖注入容器。

Services:Services是用来实现非UI相关功能的逻辑,例如logging、exception management、data access。Services可以被定义在应用程序中或者是Module中,Services通常被注册在依赖注入容器中,使得其它的组件可以很容易的定位这个服务。

Controllers:Controller被用来控制在Region中哪个View将会被呈现,同时控制这个View的创建和初始化。

MVVM 相关模块

View Model和Presenters:View Model用来封装应用程序的UI逻辑及其状态。

Model:Model被用来封装数据和相应的验证,以及相关的业务规则来保证数据的一致性和正确性。

Commands:Command被用来封装应用程序功能,Prism提供了Delegate Command和CompositeCommand两个类。

Bootstrapper:Bootstrapper用来初始化应用程序级别的组件和服务,它也被用来配置和初始化module catalog和Shell 的View和View Model。功能如图:

prism在java_Prism 框架应用-基础知识篇相关推荐

  1. Monkey框架(基础知识篇) - monkey事件介绍

    Monkey所执行的随机事件流中包含11大事件,分别是触摸事件.手势事件.二指缩放事件.轨迹事件.屏幕旋转事件.基本导航事件.主要导航事件.系统按键事件.启动Activity事件.键盘事件.其他类型事 ...

  2. Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    Hadoop学习笔记-15.HBase框架学习(基础知识篇) HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase ...

  3. Android camera(4)---Android Camera开发之基础知识篇

    Android Camera开发之基础知识篇 转自:https://blog.csdn.net/feiduclear_up/article/details/51968975#jump5 概述 Andr ...

  4. 超详细的Java面试题总结(二)之Java基础知识篇

    系列文章: 超详细的Java面试题总结(一)之Java基本知识 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java面试题总 ...

  5. 100天精通Python丨基础知识篇 —— 05、7大基础数据类型详解(变量、列表、集合、字典、元组)

    <100天精通Python专栏 - 快速入门到黑科技>是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造,专栏分为基础知识篇和黑科技应用篇.基础知识篇以理论 ...

  6. 100天精通Python丨基础知识篇 —— 08、Python 最常用的 20 个包(按使用频率排序)

    本文收录于 <100天精通Python专栏 - 快速入门到黑科技>专栏,是由 CSDN 内容合伙人丨全站排名 Top 4 的硬核博主 不吃西红柿 倾力打造,分基础知识篇和黑科技应用两大部分 ...

  7. SP 短信开发-基础知识篇

    SP 短信开发-基础知识篇 很土的话题,但是最近帮朋友做这个东西,所以写点东西出来给初学者参考. 一.准备资料 SP开发资料网站上有很多,但是主要是以下几个文档: 1.MISC1.6 SP订购通知接口 ...

  8. 计算机基础知识题库选择题,计算机基础知识篇选择题库

    计算机基础知识篇选择题库 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分 计算机基础知识篇选择题库1.微型计算机的性能指标不包括___ ...

  9. 测试岗位面试前复习之【测试基础知识篇】

    测试基础知识篇 一.app测试相关 1.android与ios的app测试的区别: 2.app测试和web测试的重点: 3.性能测试考量的指标: 4.app的性能测试,需要重点关注哪些方面? 5.站在 ...

最新文章

  1. 支付宝回应“崩了”:机房网络出现短暂抖动,已恢复正常
  2. CocoaPods安装以及遇到的坑
  3. python做接口测试的优点_python做接口测试的必要性
  4. axios发post请求,后端接收不到参数的问题
  5. Source Insight设置黑色背景
  6. 软件测试 | 测试开发 | Git分支管理搞定在线合并和本地合并
  7. Linux——(渗透理解)文件系统与日志分析
  8. 暴力破解:利用正则功能自动提取爆破结果中的特征值
  9. Step1我学习ros2的一些经历(从ubuntu安装到ros2中的位姿转换)
  10. 分频器 | 二分频,三分频,n分频
  11. 【Python】制作圆角图像的两种方案对比
  12. PTA 7-256 五分制成绩(函数实现)
  13. DNS劫持是什么意思?百度dns有什么坏处?DNS被劫持会造成哪些后果?
  14. 电子助视仪 对比增强算法 二十种色彩模式(Electronic Video Magnifier, 20 color mode)
  15. 74160ENT引脚设计法接成100进制加法计数器
  16. Linux shell test命令用法详解
  17. Matlab函数封装为DLL供Cpp调用
  18. 操作系统原理_田丽华(7)死锁
  19. 12306抢票chrome插件介绍
  20. Windows远程桌面连接操作另一电脑上的PyCharm无法编缉的解决办法

热门文章

  1. 游戏‘微信打飞机’ 第二课
  2. [微信小程序] 单张、多张图片上传(图片转base64格式)实践经验
  3. 向量场的散度和旋度_矢量场,标量场,散度,梯度,旋度的理解
  4. CRC-CCITT16(0xFFFF、XModem、0x1D0F、Kermit)
  5. 无线蓝牙耳机哪款比较好用?2022蓝牙耳机推荐
  6. python实现随机密码生成
  7. 有一天,派大星走了。海绵宝宝说:我没哭,
  8. C++实现行列式的相关操作
  9. 数据库存入图片成功但显示不出来
  10. redit高可用之哨兵