分享一个漂亮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基础上,还可以支持动态模块化(动态安装、启动、停止、更新、卸载模块)、自动化部署与更新功能。
有任何技术问题,可以加入iOpenWorks插件仓库平台QQ交流群: 121369588。
本文基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名道法自然(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
分享一个漂亮WPF界面框架创作过程及其源码(转)的更多相关文章
- 分享一个漂亮WPF界面框架创作过程及其源码
本文会作为一个系列,分为以下部分来介绍: (1)见识一下这个界面框架: (2)界面框架如何进行开发: (3)辅助开发支持:Demo.模板.VsPackage制作. 框架源码如下所示. 本文介绍第(1) ...
- 分享非常漂亮的WPF界面框架源码及插件化实现原理
在上文<分享一个非常漂亮的WPF界面框架>中我简单的介绍了一个界面框架,有朋友已经指出了,这个界面框架是基于ModernUI来实现的,在该文我将分享所有的源码,并详细描述如何基于Mod ...
- 准备.Net转前端开发-WPF界面框架那些事,UI快速实现法
题外话 打开博客园,查看首页左栏的”推荐博客”,排名前五的博客分别是(此处非广告):Artech.小坦克.圣殿骑士.腾飞(Jesse).数据之巅.再看看它们博客的最新更新时间:Artech(2014- ...
- 准备.Net转前端开发-WPF界面框架那些事,值得珍藏的8个问题
题外话 不出意外,本片内容应该是最后一篇关于.Net技术的博客,做.Net的伙伴们忽喷忽喷..Net挺好的,微软最近在跨平台方面搞的水深火热,更新也比较频繁,而且博客园的很多大牛也写的有跨平台相关技术 ...
- 准备.Net转前端开发-WPF界面框架那些事,搭建基础框架
题外话 最近都没怎么写博客,主要是最近在看WPF方面的书<wpf-4-unleashed.pdf>,挑了比较重要的几个章节学习了下WPF基础技术.另外,也把这本书推荐给目前正在从事WPF开 ...
- 分享一个漂亮的ASP.NET MVC界面框架
本文分享一个插件化的界面框架,该框架提供了用户.角色.权限管理功能,也提供了插件的管理和插件中心.下图是该界面框架的样式(全部源码和原理介绍下一篇分享,推荐越多,源码放的越早,呵呵). 要使用该界面框 ...
- 分享一个漂亮的ASP.NET MVC黑色界面框架
插件应用架构概述 基于LCLFramework插件框架的应用由以下三个部分构成: (1)主程序:针对特定应用环境(Web.WinForm等应用环境),加载启动插件,获取插件入口,运行入口程序. (2) ...
- 关于WPF界面框架MahApps.Metro的一个BUG
碰到了这个问题,记录一下,以便以后查阅: 在一个WPF项目中使用MahApps.Metro界面框架,其中有一个功能是嵌入一个带句柄的标记. 首先WPF是出了窗体和WebBrowser带有句柄外,其他控 ...
- 分享一个漂亮的ProgressBar控件
codeprject上看到的一个漂亮的ProgressBar控件.是用vb.net开发的. C#直接在工具箱中引用即可. 地址:http://www.codeproject.com/Articles/ ...
随机推荐
- GridView如何合并同类项
/// <summary> /// 合并GridView中某列相同信息的行(单元格) /// </summary> /// <param name ...
- net 页面跳转
前台: < a href="xx.html" target="_blank"> 后台: Response.Redirect("XXX.as ...
- ios开发函数(数学函数应用)
今天在计算collectionView存放最小间距的时候用到一函数 " ABS " 顺便就查了一下这些数学函数在代码中的使用.. //----------------------- ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(四) 之 用户搜索(Elasticsearch),加好友流程(1)。
前面几篇基本已经实现了大部分即时通讯功能:聊天,群聊,发送文件,图片,消息.不过这些业务都是比较粗犷的.下面我们就把业务细化,之前用的是死数据,那我们就从加好友开始吧.加好友,首先你得知道你要加谁.L ...
- 384. Shuffle an Array
Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] n ...
- 关于配置Spring框架的多个propertyConfigurer的问题
http://blog.csdn.net/aa427/article/details/38375259
- js继承的概念
js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,可以用js ...
- IOS 100 - level2 Boss
创建第一个app, buid, run. 过程 1 首先是按照知乎上的推荐去看了传说中的公开课了.看到第二集的时候觉得有种回到大学听老师上课的感觉--昏昏欲睡. 代码是一门实践课程,我觉得自己实现点东 ...
- IOS 100 - 1 开工闲聊
1 前言 现在的行情,作为码农,ios 普遍比c# 的待遇好上不少.感觉就如清洁工人,扫厕所干的再高效和干净,一个月就那么点微薄的收入.当然你可以选择去香港打扫卫生间,那里的行情据说清洁工也破万了.说 ...
- phpcms v9 黄页实现手机访问手机版,电脑访问电脑版(双模板)
第一步.模板文件夹下,yp复制一份,改名字 ypwap 第二步.修改phpcms/modules/yp/index.php和phpcms/modules/ypwap/index.php //判断客户端 ...