02Prism WPF 入门实战 - 建项

1.概要

Prism介绍

  • Github:  https://github.com/PrismLibrary/Prism

  • 开发文档:https://prismlibrary.com/docs/

Prism是一个框架,用于在WPF、Xamarin Forms、Uno Platform和WinUI中构建松散耦合、可维护和可测试的XAML应用程序。

设计目标 为了实现下列目的:创建能够由模块组成的程序,这些模块能够被单独地编写、组装、部署,并且对于程序来说是可选的 最小化团队之间的依赖,让每个团队专注与特定的领域。比如UI、逻辑代码实现或者是架构代码的开发。通过架构提高不同团队之间的复用能力 通过抽象团队通用服务提高程序质量 迭代添加新的功能

Prism被设计用来帮助你设计和实现丰富、灵活、易于维护的WPF程序。Prism实现了多种设计模式,突出架构设计的松耦合、关注点分离等原则。使用设计模式和Prism提供的额能力,你可以通过独立开发的松耦合组件轻松的集成到整个应用程序中,从而开发一个应用程序。Prism围绕架构原则的分散关注点和松耦合原则而设计的。这使得Prism提供能以下的好处:

  • 重用。Prism通过允许组件和服务能够轻松的被开发、测试、集成到一个或多个程序来实现重用。组件级别的复用是通过依赖注入来轻松地发现和集成单元测试级别的组件。应用级别的复用是重用封装了应用级别能力的模块。

  • 可扩展。Prism通过管理组件依赖,允许组件在运行时很容易地被集成或者被其他实现所替换,使得程序能够很容易地被扩展。并且将程序分解到模块,使得模块能够独立地更新和部署。Prism库中的许多组件本身就可以被扩展或者是替换。

  • 灵活。Prism通过允许像开发集成新能力一样更新功能。Prism还允许WPF程序使用通用服务和组件开发,允许程序以最适当地方式去部署和使用。还允许程序基于不同的角色和配置,提供不同的使用功能。

  • 团队开发。Prism促进团队开发,通过允许不同的团队单独开发甚至部署不同的应用程序部分。通过让团队专注于不同的功能领域或业务功能领域来减少团队之间的依赖。

  • 质量。Prism通用让开发团队充分地测试服务和组件提高程序质量。此外,由于通用服务和组件都被完全地测试过了,开发团队能够专注于程序需求而不是如何实现和测试基础代码。(以上内容均来自网络。)

2.详细内容

  • 1.业务功能:

    • (1)登录邮箱

b6feb2a2c5f31a951a5415bfdc146677.png

    • (2)邮件收发、抄送(协议、接口、文字编辑、布局)、回复 、垃圾箱、收发件箱、标星邮件、标星邮件列表、邮件(增、删、查)。

512424d10adbf843dfd0ea764ab499f1.png

    • (3)通讯录(新建、删除、修改联系人)、联系人详情、联系人列表。

7de7155de67b9d8f8a086f44ce409675.png

    • (4)设置(账号)

acb20a706d6dcf8b6670f6766b90f46e.png

  • 2.非业务功能:登录、自动更新、最大化最小化、关闭等。

a27eaed7a8c12d1e35369b605e8586c7.png

bf138bc6598728c77b2bbe16285fb234.png

  • 3.界面交互:命令区(主、副命令区划分等级根据影响范围来确定)、工作区、交互逻辑。

2e68b2b92390f2ce481382f1334a0508.png

  • 4.资源:数据资源(样式、数据内容、模板、动画、触发器等)、非托管资源(图片、音乐等文件资源)、语言资源、字体资源等。

3.建项

  • 1.VS扩展中下载 Prism Template Pack项目模板。

031ef0917be225d10796cd0bd1d73eef.png

  • 2.新建项目时,使用模板‘Prism Blank App’创建应用,选择DryIOC

17e32df608b4b114929acdc72a7b6cc2.png

  • 3.创建一个业务模块

7a74be7bf28ef05c4d2d7af730b82f7e.png

IoC:是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。

按照以上思想设计的框架都叫IoC,它只是这一类框架的总称。IoC的框架有很多种例如MEF、Autofac、Castle Windsor、Unity。

初学可简单理解为有两个部分组成一个业务容器,和若干个业务模块组成。都塞到容器中进行管理。

Plug:是业务划分独立出的模块,里面具体的业务实现和常规的MVVM一样。

d658634d76e14395455263f2a5d801ff.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rowspan 动态变化_使用colspan和rowspan动态删除html表中的多个列

好的,您的代码中的一个问题是,您删除了当前正在使用for进行迭代的单元格。我改变了你的第一个循环来完成所有反向:for (var i (rows[0].cells.length -1); i > 0; i--),从后到前...所以没有索引在删除时发生变化。第二个问题是…

[转]Linux中如何自动启动服务

linux自动启动服务很简单,最简单的是把启动命令放到/etc/rc.d/rc.local文件里。这样就可以每次启动的时候自动启动服务了。例如对于 apache,编译好apache后会在安装目录的bin下生成apachectl文件,这是个启动脚本,我们只需要把这个…

一个C实现的线程池(产品暂未运用)

https://github.com/Pithikos/C-Thread-Pool

html首页 slider图片切换效果,jQuery插件Slider Revolution实现响应动画滑动图片切换效果...

jQuery插件Slider Revolution实现响应动画滑动图片切换效果2018-12-31编程之家https://www.jb51.cc这是一款非常强大的内容切换插件,它基于jQuery,它充分响应,支持移动设备,支持手机触摸,键盘翻页;它内置幻…

Asp.Net+Jquery.Ajax详解5-$.getScript

目录(已经更新的文章会有连接,从7月25日开始,每2到3天更新一篇): Asp.NetJquery.Ajax详解1-开篇(2012.07.25发) Asp.NetJquery.Ajax详解2-$.Load(2012.07.26发) Asp.NetJ…

大数据告诉你:学历真的能改变命运!!

全世界只有3.14 % 的人关注了爆炸吧知识央视新闻曾做过关于高考的调查,结果有七成网友支持高考取消数学,看到新闻后,有一位网友却一针见血地评论道:数学考试存在的意义就是把这七成网友筛选掉。的确,虽然买菜不需要专业…

.net core 中如何有效屏蔽重复提交

咨询区 Guilherme Ferreira:我通过 post 方式向我的一个webapi中提交数据,然后插入到数据库中,在 ui端,当用户点击某一个 button 之后,代码会将 button 禁用,但因为某些原因,点击按钮的速度比禁…

小米8ios图标包下载_小米互传PC端抢先下载,免流量、高速互传,支持多设备共享...

小米早在MIUI初期就已经在开始探索手机与电脑之间互传文件的问题,MIUI"无线数据线"功能一直备受喜欢。手机与电脑之间互传,90%的用户都选择使用WX或者QQ来实现,它们互传的通道是互联网,无网时不可使用。为解决这个问题&…

sql server2008中怎样用sql语句创建数据库和数据表

这是简单用代码实现创建数据库和数据表的sql语句,如下: --调用系统数据库-- use master go /***防止你要创建的数据库同名,先把它删除掉****/ if Exists(select * from dbo.sysdatabases where nameTestDB) begin drop database TestDB end g…

[C++][IO]读写二进制文件

1. 以二进制方式读写结构体 struct Student {string name;string sex;int age; }void write(string filePath, const struct Student* stu, int n) {FILE *fp;int i;if((fpfopen(filePath,"wb"))NULL){printf("cant open the file");return;}for(i0;i<n…

HTML怎么做类似QQ聊天气泡,h5实现QQ聊天气泡的实例介绍

这篇文章主要介绍了HTML5实现QQ聊天气泡效果&#xff0c;用 HTML/CSS 做了个类似QQ的聊天气泡&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下今天自己用 HTML/CSS 做了个类似QQ的聊天气泡&#xff0c;以下是效果图&#xff1a;以下说下关键地方的样式…

高等数学的用处之一

1 只能说计算的真精准2 龙虾&#xff1a;我都准备半天了&#xff0c;你俩到底上不上&#xff1f;3 猫(≧^.^≦)&#xff1a;我为这个宿舍付出太多了&#xff01;4 请举一个日常生活中利用高等数学来解决问题的案例。5 男生做什么会让女生不开心7 人家拍的泸沽湖的水性杨花和我拍…

wp7 blogs

http://blog.csdn.net/jazywoo123/article/month/2012/04/3转载于:https://www.cnblogs.com/songtzu/archive/2012/08/09/2630573.html

k8s 查看ip地址属于哪个pod_Kubernetes Pod 如何获取 IP 地址

【编者的话】在学习 Kubernetes 网络模型的过程中&#xff0c;了解各种网络组件的作用以及如何交互非常重要。本文就介绍了各种网络组件在 Kubernetes 集群中是如何交互的&#xff0c;以及如何帮助每个 Pod 都能获取 IP 地址。Kubernetes 网络模型的核心要求之一是每个 Pod 都拥…

Fiddler抓包一键生成调用代码

首先我们的需求场景是用Fiddler抓到某个接口调用后&#xff0c;用代码来模拟调用&#xff0c;一般我们写代码会有3个步骤&#xff1a;1设置http请求相关的参数:header,method,url,cookie等2设置post的body(如果是post的话需要)3拿到返回的body(一般我们需要拿到接口的返回体进行…

frame框架的显示隐藏操作 (转)

下面是主要代码&#xff1a; index.htm <html><head><meta HTTP-EQUIV"Content-Type" CONTENT"text/html; charsetgb2312"><meta name"GENERATOR" content"Microsoft FrontPage 4.0"><meta name"Prog…

DexClassLoader的使用

版权声明&#xff1a;您好&#xff0c;转载请留下本人博客的地址&#xff0c;谢谢 https://blog.csdn.net/hongbochen1223/article/details/47146613 在Java环境中,有个概念叫做”类装载器(Class Loader)”,其作用是动态加载Class文件.标准的Java SDK中有一个ClassLoader类,借助…

arm开发tq2440上的c++裸奔程序

AVR实验做到LCD的时候&#xff0c;就发现proteus上没有现成合适的显示模块&#xff0c;网上找的模块不是按一般方法封装的&#xff0c;想来自己还有一块arm9开发板&#xff0c;大概大三、大四时候买的&#xff0c;已经搁置三年了。毕业这两年已经从51玩到AVR&#xff0c;虽然大…

这才是老公的正确用法,不吃就往死里打......

1 倒是好办法就是有点儿费爸爸▼2 一只被主人遗弃的小熊的奇幻旅程▼3 小子&#xff0c;你单身的命运gu7在你把美女老师撂倒那一刻就注定了...▼4 张萌姐姐自我肯定式唱歌▼5 &#xff1f;&#xff1f;&#xff1f;有被冒犯到▼6 听说昨天有个少年28岁就退休了▼7 哪个男…

java将date类型转成yyyymmdd_Java时间日期格式转换

1.1 返回时间类型 yyyy-MM-dd HH:mm:sspublic static Date getNowDate() {Date currentTime new Date();SimpleDateFormat formatter new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString formatter.format(currentTime);ParsePosition pos new Pars…