分享好友 最新动态首页 最新动态分类 切换频道
推荐一个IT老鸟肝了2月有余的免费开源WPF企业级开发框架
2024-12-25 18:25

一个新学WPF的IT老鸟,肝了2个月做了这么一个WPF企业级开发框架,站长clone学习,觉得甚是不错。这是一个使用了Prism搭建的插件式框架,封装了DataGrid的使用,使整个框架子模块简单易学、易扩展,特别是作者还写了一个系列博客教程,值得点赞。

推荐一个IT老鸟肝了2月有余的免费开源WPF企业级开发框架

下面是作者博文系列首篇:WPF企业级开发框架搭建指南(启示录),2020从入门到放弃

WPF技术是一个很不错的技术,但一直没有上手过正式的项目,趁在做这个医疗项目时,遂搭建一个WPF开发框架,目的是为了统一WPF开发并提高开发效率;我对WPF技术算是零基础,现学现卖,用这些不成体系的文字予以记录一些想法和实践。

  1. WPF企业级开发框架搭建指南(启示录)
  2. JHRS开发框架之基础类库
  3. JHRS开发框架之第三方框架选型
  4. JHRS开发框架之WPF调用Web API封装
  5. JHRS开发框架之客户端入口项目
  6. JHRS开发框架之各子系统如何整合
  7. JHRS开发框架之怎样设计合理的ViewModel基类
  8. JHRS开发框架之公用组件用户控件的封装
  9. JHRS开发框架之建议遵循的一些建目录文件原则
  10. JHRS开发框架之WPF数据验证
  11. JHRS开发框架之ViewModel相互传参和弹框回传参的解决办法
  12. JHRS开发框架之踩坑记(终章)

在正式开始WPF开发框架搭建之前,做了一些技术选型和在群里面咨询了下对WPF技术比较了解的群友,当中就属dotnet9.com的站长经常被笔者叨扰。先来说说我期望中的开发框架要实现哪些功能。

在开始搭建之前呢,还是晾一下最终的架构图吧。

上图就是折腾出来的一个框架,图不美观的话,大伙也就凑合着看吧。下图是解决方案:

  • 开源地址:https://github.com/jhrscom/jhrs
  • 官方博客:https://jhrs.com
  • 用到插件:https://marketplace.visualstudio.com/items?itemName=PeterSpa.XamlBinding

因为项目是使用WPF来开发的,自然基于【MVVM】的理念搭建了这么一个快速开发框架,适用于开发【传统类型的管理系统】,并通过调用web api的方式来完成所有的业务操作,在WPF的Page,窗体(Window),用户控件的后置代码,几乎不会有任何的业务代码,除了一些控制界面行为的功能。

在搭建这个框架时,是基于最新的 【 .net 5】用的技术版本是比较新的,演示代码中,wpf也是使用 .net 5。

  • 技术平台:.Net 5.0
  • 技术框架:WPF + Prism+ AspectInjector + Refit
  • IoC组件:Prism自带Prism.Unity
  • 数据序列化:Newtonsoft.Json,可替换
  • 日志记录:系统自带

解决方案从上到下依次为:

在JHRS.Core这个库里面,各个目录功能说明如下:

  1. Aop:实现了一个点击按钮显示转圈圈效果的类,一般用于加载数据,点击按钮从服务器获取数据让用户等侯片刻。
  2. Apis:保存着代码生成工具【JHRS.GenerateAPI】自动生成的接口,该工具可以在线解析swagger生成供调用的接口,参见这里(使用该工具需要设置swagger地址,另外有bug的话,自己修改下就可以了)。
  3. Controls:定义了WPF界面使用的公用控件(保存在Controls目录),如通用表格(DataGrid),下拉框等,凡公用的控件,都可以保存在此目录。
  4. Enums:公用的枚举,各个模块可以引用。
  5. Events:事件类,Prism自带事件总线,相应的事件类在这个目录创建,具体应用参见这里。
  6. Extensions:扩展类
  7. Identity:身份认证,即登录系统后,从服务器端获取到的身份认证会话信息(用户,token等)。
  8. Models:各个模块的DTO对象,一般是根据swagger解析出各个接口的实体对象(输入,输出DTO)。
  9. Modules:模块的辅助类。
  10. ViewModels:这个目录里面定义了ViewModel的基类,处理各个功能Page业务的ViewModel类,需要从这里继承对应的类,如管理页面继承BaseManagePageViewModel,而新增编辑页面继承BaseDialogPageViewModel类等。并且在基类里面定义了公共方法,如消息提示框,消息弹框,打开模态窗口等,效果见下方所示。

JHRS.Shell是WPF客户端项目的入口程序,并且定义了整个系统公用的消息提示框,模态窗口风格,主窗口等;登录的入口也是在这里定义的,登录系统后,可以自行实现权限功能加只加载对应的子模块(子系统);在程序启动时,会自动做一些初始化操作,扫描程序集自动注入相关功能,具体实现参见这里。

消息提示框

消息弹框

确认消息框

模态窗口

遮罩层效果(蒙层效果或Loading效果)

遮罩层效果一般用于点击按钮,加载数据时使用,即调用接口到数据呈现中间有一个等待的过程,就可以显示出来,因此在框架中通过AOP方式封装了这么一个效果,调用时在相关的地方标记一个特性即可。先来看看效果。

该效果是直接从CSDN抠过来的,然后整到到代码里面去的,纯演示目的。

参考链接:https://blog.csdn.net/lhx527099095/article/details/8005095

在modules这个解决方案文件夹里面的是各个子模块,也就是各个子系统,例如【JHRS.OutpatientSystem】是WPF项目的子系统之一(门诊模块);在各子系统中,最外层拥有一个Module的类(OutpatientSystemModule),需要实现IModule接口供Prism自动扫描注册到容器里面。

在子模块中,目录的组织原则如下。

目录组织原则

在每一个子系统中,最外层的一个模块类,名称规则为:【模块名称+Module】,编写这个类是为了使用Prism加载这个模块。

基础类库,可以任意扩展,该库可以供其它所有库引用。

该工具是在线解析swagger生成供Refit调用的接口,生成的接口如下:

调用接口的示例代码如下:

对于WPF开发来说,我并不是很熟悉,这段时间以来一直网上学习和借鉴一些开源的框架,再结合实际项目而整出来的这个开发框架;可能对于从事WPF开发的朋友来说有一定的借鉴意义。

完整的项目代码已经开源到github上面。在这个项目中,并不包含web api的项目。

  • 开源地址:https://github.com/jhrscom/jhrs
  • 官方博客:https://jhrs.com
最新文章
360清理大师电脑版 v8.1.7
360清理大师电脑版是由知名安全软件公司360推出的一款强大实用的网络清理工具,360清理大师电脑版不仅具备强大的清理功能,还拥有独特的加速技术和隐私保护功能,能够帮助用户高效、安全地清理手机垃圾文件,提升手机性能。无论是释放存储
2024上海PTC ASIA展览会
2024将于在上海新国际博览中心举行2024亚洲国际动力传动与控制技术展览会时间:地点:上海新国际博览中心(上海市浦东新区龙阳路2345号)主办单位:中国液压气动密封件工业协会中国机械通用零部件工业协会,汉诺威米兰展览(上海)有限公司
ai怎么设计矢量街景图? ai街景插画的画法
在城市里面有着很多美丽的街景,特别是夜景很漂亮,想要绘制一副矢量的街景图,该怎么绘制呢?今天,我们就来画一画街景,从中学习一下城市景色的绘制方法,体会一下黄色与青色、绿色的搭配应用效果,了解一下渐变色呈现玻璃、木头的不同效
36漫画电脑版 1.11
36漫画这是一款实用的漫画绘画工具软件!漫画推荐:分享更多有趣精彩的漫画;漫画绘画:多种多样的漫画风格美图,可自由绘制涂色,为生活增添乐趣;美图壁纸:各种动漫风格的美图壁纸、头像,可随意下载哦。优化产品细节特别说明:当前应用
flask框架大学生心理辅导系统毕设源码+论文
校园二手货物交易平台m1a2o本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。 关于大学生心理辅导系统的研究,现有研究多集中在大学生心
AI设计主题:融合AI主题与方案,打造创新AI做设计
随着科技的飞速发展,人工智能()已经渗透到了咱们生活的方方面面设计领域也不例外。本文将从设计主题出发,探讨怎么样融合主题与方案,打造创新做设计,以实现数字时代的人文关怀。在数字化浪潮的推动下,人类正以前所未有的速度迈向智慧
### 必备神器:推荐几款自动生成排版工具,自动软件生成利器大
在数字时代排版工具的自动化和智能化已经成为提升工作效率的必不可少途径。无论是专业设计师还是普通办公人员一款优秀的自动生成排版工具都能让工作变得轻松高效。这些工具不仅可以帮助咱们节省时间还能保证排版的一致性和专业性。本文将为
Docker之使用maven插件【配置方式】构建并推送镜像到私有仓库
准备工作 操作系统版本docker版本目前我在本地vmware虚拟机里已经安装了docker registry私有仓库(192.168.126.99),具体步骤可以参考 : 【安装私有镜像仓库-docker-registry+docker-registry-web(镜
91轻量版ios:91轻量版iOS:优化你的手机体验,畅享极致性能!
  对于喜欢个性化手机界面的用户而言,选择合适的主题是提升使用体验的重要一步。91轻量版iOS主题以其简洁、清新的设计风格吸引了大量用户。本文将深入探讨这一主题的特点及其在实际应用中的优势。  不少用户反馈,通过安装该模板后,
300130
公司全资子公司信联征信已获得中国人民银行关于企业征信机构备案资质,同时入围国家发改委首批26家综合信用服务机构资格。信联征信主要业务是为金融机构、政府、行业协会客户提供优质稳定的大数据风控服务、政企信用服务、数据赋能服务、
相关文章
推荐文章
发表评论
0评