摘要: 1. 背景 导航是为了实现不同界面的切换,是一种组织系统功能的方式。提供两种导航,一是基于View切换,二是基于ViewModel状态。 2. 基于View切换的导航 最常用导航方式。在该种导航中首先需要定义一个域(Region),然后注册所有需要的View。通过切换不同视图,可以实现导航。下面具体 阅读全文
posted @ 2020-11-01 23:28 饮冰少年 阅读(1499) 评论(0) 推荐(0) 编辑
摘要: 1. UI布局关键概念 一个组合应用UI的根节点被称作Shell,一般只有一个Shell。Shell作为应用的主页,包含一个或者多个域。域是内容占位符,可以包含一个或者多个View。有很多控件可以作为域,如ContentControl,ItemsControl,TabControl,以及一些自定义的 阅读全文
posted @ 2020-11-01 23:25 饮冰少年 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 1. 背景 MVVM是一种常用的设计模式,它的最主要功能是将数据与代码隔离,实现viewmodel的可测试。架构图如下: 2. 命令-Command 2.1 WPF 路由命令 WPF提供一种内置的命令实现称为路由命令。这与MVVM设计模式中的命令不同。路由命令通过UI Tree进行路由。路由命令可沿 阅读全文
posted @ 2020-11-01 23:23 饮冰少年 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 1. 背景 在Prism中,可以使用交互请求对象实现弹出窗口行为,系统提供默认的通知弹窗和确认弹窗,同时允许自定义弹窗。这里使用MVVM模式实现自定义弹窗。 2. 实现 2.1 ViewModel 为了实现自定义弹窗,ViewModel类需要继承IInteractionRequestAware,该接 阅读全文
posted @ 2020-11-01 23:19 饮冰少年 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 1. CanExecute实现 只是将命令绑定到特定控件是不会触发CanExecute方法执行,该方法只是在实例化命令的时候才使用,其余如果需要触发该事件,只能通过后台代码组合触发,如更新一个后台类字段,该字段更新触发是否执行的判定。方法有两种: 执行调用触发事件方法 观察某个值改变 1.1 执行调 阅读全文
posted @ 2020-11-01 23:18 饮冰少年 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 1.概述 MVVM各个部分功能如下: Model:定义业务逻辑 View:定义面向用户接口,UI逻辑,处理用户交互请求 ViewModel:负责界面导航逻辑和应用状态管理,呈现逻辑。 1.1. 各司其职 view 定义了界面的结构和样式,后台代码不能包含任何其他需要进行单元测试的逻辑。 从面向对象的 阅读全文
posted @ 2020-11-01 23:17 饮冰少年 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1. 背景 将应用程序分成一个一个模块是非常有好处,利于协同开发,扩展,测试,以及维护。 1.1. Prism对模块化的支持 使用Prism框架组织代码就是为了对一个个部件模块化,降低耦合度。Prism提供如下方法实现模块化。 模块目录,用于注册模块信息,如名称以及模块位置。 为模块声明元属性,支持 阅读全文
posted @ 2020-11-01 23:16 饮冰少年 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 1. 为什么使用依赖注入? 使用依赖注入的原因: 开发更简单,开发者很容易从容器中获得需要的服务; 将接口与实现解耦; 更容易管理对象生命周期。 2. 依赖注入容器有哪些? 当前Prism官方支持的第三方依赖注册容器有: Unity Mef StructureMap Ninject Autofac 阅读全文
posted @ 2020-11-01 23:14 饮冰少年 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 说明 Prism中如果把日志级别设定为DEBUG,会显示框架加载信息 Prism默认是没有日志系统的 步骤 下载log4net包 Install-Package log4net; 在app.config中配置日志系统需要的信息 <?xml version="1.0" encoding="utf-8" 阅读全文
posted @ 2020-11-01 23:13 饮冰少年 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 1.概述 Prism使用BootStrapper初始化应用程序,初始化步骤如下: 说明,将LogggerFacade的日志级别设置为Debug可以在日志里看到Prism的启动流程 2.创建日志系统 日志系统是任何一个企业级应用必备的组件,Prism框架本身也依赖于该日志系统,将日志级别设置为Debu 阅读全文
posted @ 2020-11-01 23:11 饮冰少年 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 1. 组织方式 Prism最大好处是进行模块化方式开发,在项目组织时也需要贯彻这一思想。笔者建议的项目组织方式是: 主项目 共享项目,共享项目包含公共信息,其他项目均引用该项目。 多个应用服务模块 多个功能模块 测试项目 项目的命名以主项目名.模块名命名。 以笔者领导开发的二级库项目为例,项目组织方 阅读全文
posted @ 2020-11-01 23:09 饮冰少年 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 说明 使用的安装包有: Prism 6.3 Unity 4.0.1 基于Prism框架的应用程序都包含一个主项目和若干功能模块,主项目负责启动时初始化工作,包括依赖注入容器,定义Shell等等。功能模块则负责单独的逻辑功能。下面使用helloworld说明。 1. 安装 新建WPF项目,使用4.5 阅读全文
posted @ 2020-11-01 22:59 饮冰少年 阅读(100) 评论(0) 推荐(0) 编辑
摘要: Prism框架有很多安装包,即便用了很长一段时间,也可能会不知道如何安装框架。细心分析包的依赖关系,发现所有包均依赖与依赖注入扩展插件,以使用Unity为例,Prism.Unity依赖Prism.Wpf,Unity和CommonServiceLocator,Prism.Wpf依赖于Prism.Cor 阅读全文
posted @ 2020-11-01 22:54 饮冰少年 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 架构目标 以模块化方式开发应用,这些模块被独立团队用WPF技术开发,集成,部署,这是使用Prism的最大好处。 最小化交叉团队依赖。允许团队在不同领域专业化,比如UI设计,商业逻辑实现,基础代码开发 架构用于提升不同团队(开发模块)的重复利用性。 通过抽象出可在不同队伍使用的公共服务提升应用质量 提 阅读全文
posted @ 2020-11-01 22:51 饮冰少年 阅读(289) 评论(0) 推荐(0) 编辑