分享一个漂亮WPF界面框架创作过程及其源码
本文会作为一个系列,分为以下部分来介绍:
(1)见识一下这个界面框架;
(2)界面框架如何进行开发;
(3)辅助开发支持:Demo、模板、VsPackage制作。
框架源码如下所示。
本文介绍第(1)部分。
1 安装
现在我们就先来见识一下这个界面框架。首先,你可以通过以下链接来下载到这个框架的VS插件安装包:下载地址。下载解压后,文件如下:
双击这个文件,进行安装(目前只支持VS2012和VS2013,抛弃了VS2010,I am sorry)。
点击安装,即可完成。
2 创建主程序
接着打开Visual Studio 2013,新建项目,选择默认iOpenWorksExtension。
这里面有两个模板,一个是主程序、一个是插件。在这里,我们先创建一个主程序,你可以发现主程序已经包含了一些通用的功能插件,比如界面框架、配置服务、数据库服务、权限管理等。在编译主程序之前,需要确保已经安装了iOpenWorksSDK和Nuget。
这里编译时需要OSGi.NET框架支持,并使用Nuget去下载一些第三方库。编译通过后,可以直接运行主程序。
首先是一个SplashWindow。
接着是一个Login窗体,输入默认管理员admin/admin。
登录成功后,显示如下主界面,左边是可扩展导航栏、右边是可扩展显示区域、底下是状态栏,右上角有可扩展的系统菜单。
3 创建插件
接着,我们在项目中来添加一个新建插件。需要注意的是:插件目录必须位于主程序的bin/Plugins目录。
插件创建完成后,其项目结构如下所示。
这是一个使用MVVM架构开发的典型的应用。Model表示数据库模型、DataAccessor表示数据库访问类、ViewModel表示视图模型。接着我们来运行项目。你可以发现界面多了一个功能模块。
插件定义了一个CourseManagementUserControl.xaml页面,当点击“课程管理”菜单时,便在右边显示区域动态展示出来。点击“增加/编辑”时,在右边弹出一个输入框,加载了AddOrEditCourseUserControl.xaml控件。在插件的Manifest.xml文件,你可以看到,插件是通过以下配置将菜单和现实内容注册到界面框架的。
另外,在插件的BundleActivator里面定义了如下服务供插件直接调用。
服务即通用功能,有:
(1)PermissionService权限检测服务:编码方式来判断当前用户是否具有某个权限;
(2)ConfigurationService配置服务:持久化保存界面位置、大小、颜色等个性化信息;
(3)DbConnectionFactoryService数据库连接工厂:获取数据库连接;
(4)MainWindowService主窗体服务:用于关闭当前显示区域和打开/关闭侧边框。
在插件开发过程中,我们可以直接来写模型、数据库访问、视图模型、视图代码,如果需要使用框架功能,你就调用上述4个服务即可,不再需要与任何框架打交道。下面我们可以尝试来添加一个新的XAML页面ContactsManagementUserControl.xaml,并更改Manifest.xml做如下配置。
此时,运行后,新页面便可以加载到内容区域了。
下来就可以在这个页面上根据业务来编写页面显示、ViewModel等代码了。
4 框架体验总结
通过上述简单演示,你可以发现这样的框架有如下好处:
(1)高复用:界面可服用、通用功能可服用;
(2)标准化:每一个插件都是用标准的架构、标准的代码来进行开发,容易维护;
(3)模块化:可以将一个大软件分成不同模块,由不同人开发不同插件来组合;
(4)分层:强制将基础插件与业务插件分为不同层次,不至于出现基础插件调用业务插件的功能;
(5)一致的用户体验:框架提供标准化UI,使整个系统有了一致的展示。
此外,在OSGi.NET基础上,还可以支持动态模块化(动态安装、启动、停止、更新、卸载模块)、自动化部署与更新功能。
分享一个漂亮WPF界面框架创作过程及其源码相关推荐
- 准备.Net转前端开发-WPF界面框架那些事,UI快速实现法
题外话 打开博客园,查看首页左栏的"推荐博客",排名前五的博客分别是(此处非广告):Artech.小坦克.圣殿骑士.腾飞(Jesse).数据之巅.再看看它们博客的最新更新时间:Ar ...
- mfc在调整界面时左边的控件会丢失_Qt项目中如何完成一个漂亮的界面
在Qt项目开发过程中,如何实现做出漂亮的界面呢? 一般来说,一个界面的完成是美工.开发者和用户共同完成的.美工完成UI设计,开发者完成实现,用户对UI提出修改意见.本文主要来探讨一下如何从UI设计到交 ...
- 分享一个很酷很炫的html5特效网站源码
原创整理不易,转载请注明出处:分享一个很酷很炫的html5特效网站源码 代码下载地址:http://www.zuidaima.com/share/1784027301841920.htm 在线演示:h ...
- 分享一个Auto.js写的自动挂机聊天源码(保护生态)
这个软件是Auto.js写的,可以实现自动打招呼和聊天的功能-保护生态,下面分享软件部分核心源码,希望对auto.js技术爱好者有所启示. "ui"; var Base64 = a ...
- 分享一个漂亮的后台 admin 前端模板
点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 ...
- 一个简单图形界面框架XYGui的设计与实现 (一)
(同步个人博客http://sxysxy.org/blogs/67 到csdn..) 前传 和dram神犇做了个交♂易,我来发布一些关于制作一个Gui库的教程.借用林则徐的两句名言来描述我现在的心情: ...
- 分享一个javascript alert精简框架
如果你不喜欢浏览器自带的alert你可以尝试总共不超过10KB somke js 下载地址:http://smoke-js.com/ 使用方法 somke.alert("hello wor ...
- 分享一个漂亮的php验证码类
直接上代码: //验证码类 class ValidateCode {private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ2345 ...
- 分享一个自定义桌面程序框架
最新文章
- spell_picture第三版终于摆脱了命令行的操作
- 汇编语言-第四章 第一个程序
- 【❗JS奇技淫巧❗】JavaScript:截取DataURL中的base64字符串
- linux内核调用( )为进程创建虚存区_Linux内核分析-总结篇(九)
- 解决Tomcat8及Tomcat7下http的post、get请求中参数中文乱码问题
- event-config.h指明所在系统的环境
- 各个历史版本 cuda toolkit 下载链接
- 每月物品消耗统计表_预算统计表- .doc
- NCC2105关于分管领导审批流设置另一方法
- vs2015显示方法引用个数
- IndentationError: expected an indented block报错解决
- js、Java的url参数转码(url里中文、特殊符号参数转码)
- 基于Spring Boot的农家乐点餐系统
- 读曾鸣的《智能商业》有感
- 实验七 函数程序设计 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打, 仅供参考)
- 10只老鼠与1000瓶药水
- 【原生代码】Python3 实现ATR、MA、EMA、SMMA、RMA、TEMA指标的计算
- Java编写圆形三角形长方形等面积与周长
- 构建高性能微服务架构(网易)
- 【go实战系列五】 go1.19.2与pkg中error如何wrap与unwrap Errors | 将error进行wrap向上处理思想 | pkg/errors