本文会作为一个系列,分为以下部分来介绍:

(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界面框架创作过程及其源码相关推荐

  1. 准备.Net转前端开发-WPF界面框架那些事,UI快速实现法

    题外话 打开博客园,查看首页左栏的"推荐博客",排名前五的博客分别是(此处非广告):Artech.小坦克.圣殿骑士.腾飞(Jesse).数据之巅.再看看它们博客的最新更新时间:Ar ...

  2. mfc在调整界面时左边的控件会丢失_Qt项目中如何完成一个漂亮的界面

    在Qt项目开发过程中,如何实现做出漂亮的界面呢? 一般来说,一个界面的完成是美工.开发者和用户共同完成的.美工完成UI设计,开发者完成实现,用户对UI提出修改意见.本文主要来探讨一下如何从UI设计到交 ...

  3. 分享一个很酷很炫的html5特效网站源码

    原创整理不易,转载请注明出处:分享一个很酷很炫的html5特效网站源码 代码下载地址:http://www.zuidaima.com/share/1784027301841920.htm 在线演示:h ...

  4. 分享一个Auto.js写的自动挂机聊天源码(保护生态)

    这个软件是Auto.js写的,可以实现自动打招呼和聊天的功能-保护生态,下面分享软件部分核心源码,希望对auto.js技术爱好者有所启示. "ui"; var Base64 = a ...

  5. 分享一个漂亮的后台 admin 前端模板

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~ 中文详细注释的开源项目 ...

  6. 一个简单图形界面框架XYGui的设计与实现 (一)

    (同步个人博客http://sxysxy.org/blogs/67 到csdn..) 前传 和dram神犇做了个交♂易,我来发布一些关于制作一个Gui库的教程.借用林则徐的两句名言来描述我现在的心情: ...

  7. 分享一个javascript alert精简框架

    如果你不喜欢浏览器自带的alert你可以尝试总共不超过10KB somke js  下载地址:http://smoke-js.com/ 使用方法 somke.alert("hello wor ...

  8. 分享一个漂亮的php验证码类

    直接上代码: //验证码类 class ValidateCode {private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ2345 ...

  9. 分享一个自定义桌面程序框架

最新文章

  1. spell_picture第三版终于摆脱了命令行的操作
  2. 汇编语言-第四章 第一个程序
  3. 【❗JS奇技淫巧❗】JavaScript:截取DataURL中的base64字符串
  4. linux内核调用( )为进程创建虚存区_Linux内核分析-总结篇(九)
  5. 解决Tomcat8及Tomcat7下http的post、get请求中参数中文乱码问题
  6. event-config.h指明所在系统的环境
  7. 各个历史版本 cuda toolkit 下载链接
  8. 每月物品消耗统计表_预算统计表- .doc
  9. NCC2105关于分管领导审批流设置另一方法
  10. vs2015显示方法引用个数
  11. IndentationError: expected an indented block报错解决
  12. js、Java的url参数转码(url里中文、特殊符号参数转码)
  13. 基于Spring Boot的农家乐点餐系统
  14. 读曾鸣的《智能商业》有感
  15. 实验七 函数程序设计 张玉生《C语言程序设计实训教程》双色版 配套实验书答案 (纯手打, 仅供参考)
  16. 10只老鼠与1000瓶药水
  17. 【原生代码】Python3 实现ATR、MA、EMA、SMMA、RMA、TEMA指标的计算
  18. Java编写圆形三角形长方形等面积与周长
  19. 构建高性能微服务架构(网易)
  20. 【go实战系列五】 go1.19.2与pkg中error如何wrap与unwrap Errors | 将error进行wrap向上处理思想 | pkg/errors

热门文章

  1. 003《区块链开发指南》一一1.2 区块和区块链 转
  2. Win10 Redstone再添新技能:深度集成App-V应用虚拟化
  3. BZOJ 3679 数位DP
  4. JAXB:Java对象序和XML互相转化的利器
  5. HttpURLConnection类的使用
  6. hive-jdbc/odbc的解读和看法
  7. Head first 第一章
  8. 希望大家推荐一个javaweb开源框架
  9. 很多大企业都在用的Pentaho 商业分析软件中存在多个严重缺陷
  10. Windows PrintNightmare 漏洞和补丁分析