如何修改facetrackingbasics-wpf使其实现不同的功能
1个回答
2015-09-08
展开全部
1 ModernUI简介
ModernUI是一个开源的WPF界面库,利用该界面库,我们可以创建很酷的应用程序。下面是ModernUI官方示例,你可以从官方网站直接下载源码运行,如果是.NET 4.0的话,记得要声明“NET4”预编译变量,否则无法编译通过。
要编写这样的WPF界面,我们需要在一个Window上声明菜单和Tab页面,下图是定义菜单的声明。
此外,每一个Tab风格页面,你也需要手动的为菜单创建这样的界面元素。
直接用这样的方式来使用ModernUI,显然不太适合团队协作性的并行开发,因为在一个团队的协作中,不同的人需要完成不同的功能,实现不同页面,每个人都需要来更改主界面。
我非常希望模块化的开发方法,因为这可以尽可能的复用现有资产,使程序员可以聚焦在自己关注的业务逻辑上,不需要关心UI的使用。下面,我将来描述基于ModernUI实现的一个通用界面框架,这个界面框架允许程序员在自己的业务模块中配置需要显示的界面元素。
2 通用界面框架实现思路
我希望能够实现这样的通用界面框架:
(1)程序员可以直接实现需要展现业务逻辑的界面,不需要关注如何使用ModernUI;
(2)程序员可以通过简单的配置就可以将自己实现的业务逻辑页面显示在主界面中;
(3)这个界面框架可以完全复用。
当我看到ModernUI这个界面库时,我希望将应用程序做成模块化,每一个模块能够:
(1)通过以下配置能够直接显示二级菜单。
(2)通过以下配置能够直接显示三级菜单。
这样做的好处是,开发插件的时候可以不需要关心界面框架插件;团队在协作开发应用的时候,可以独立开发并不需要修改主界面;团队成员的插件可以随时集成到这个主界面;当主界面无法满足我们的布局时或者用户需求无法满足时,可以直接替换主界面框架而不需要修改任何插件代码。
最终的效果如下,以下界面的几个菜单及点击菜单显示的内容由DemoPlugin插件、DemoPlugin2插件来提供。当插件框架加载更多插件时,界面上会出现更多的菜单;反之,当插件被卸载或者被停止时,则相应的菜单将消失掉。
下面我来介绍如何实现。
3 基于ModernUI和OSGi.NET的插件化界面框架实现原理及源码分析
3.1 OSGi.NET插件框架原理简介
OSGi.NET框架是一个完全通用的.NET插件框架,它支持WPF、WinForm、ASP.NET、ASP.NET MVC 3.0/4.0、控制台等任意.NET应用程序,也就是说,你可以基于该插件框架来快速构架插件化的应用程序。OSGi.NET插件框架提供了插件化支持、插件扩展和面向服务支持三大功能。
OSGi.NET插件框架启动时,从插件目录中搜索插件,安装并启动这些插件,将这些插件组装在插件框架中;一个插件可以暴露扩展点,允许其它插件在不更改其代码情况下,扩展该插件的功能;插件间可以通过服务来进行通讯。
在一个插件应用程序中,它首先要获取一个入口点,这个入口点由一个插件来提供,然后进入这个插件的入口并运行起来。一个提供入口的插件通常是一个主界面插件,比如上面介绍的这个WPF界面框架。也就是说,插件应用程序启动起来后,会先运行这个界面框架的主界面。而主界面一般都提供了关于界面元素的扩展,允许其它插件将菜单、导航和内容页面注册到主界面,因此,当主界面运行时,它会将其它插件注册的界面元素显示出来。当用户点击界面元素时,插件框架就会加载这个插件的页面,某个插件的页面在呈现时,则有可能会从数据库中提取数据展示,这时候,该插件则可能会调用数据访问服务提供的通用数据访问接口。OSGi.NET提供的三大功能,刚好能够非常的吻合这样的系统的启动形式。当然,OSGi.NET除了提供插件三大支撑功能之外,它还支持插件动态性与隔离性。动态性,意味着我们可以在运行时来动态安装、启动、停止、卸载和更新插件,而隔离性则意味着每一个插件都拥有自己独立的目录,有自己独立的类型加载器和类型空间。
基于OSGi.NET插件框架,我们很容易实现插件的动态安装、远程管理、自动化部署、自动升级和应用商店。下面,我来描述如何使用OSGi.NET来构建一个WPF插件应用。
ModernUI是一个开源的WPF界面库,利用该界面库,我们可以创建很酷的应用程序。下面是ModernUI官方示例,你可以从官方网站直接下载源码运行,如果是.NET 4.0的话,记得要声明“NET4”预编译变量,否则无法编译通过。
要编写这样的WPF界面,我们需要在一个Window上声明菜单和Tab页面,下图是定义菜单的声明。
此外,每一个Tab风格页面,你也需要手动的为菜单创建这样的界面元素。
直接用这样的方式来使用ModernUI,显然不太适合团队协作性的并行开发,因为在一个团队的协作中,不同的人需要完成不同的功能,实现不同页面,每个人都需要来更改主界面。
我非常希望模块化的开发方法,因为这可以尽可能的复用现有资产,使程序员可以聚焦在自己关注的业务逻辑上,不需要关心UI的使用。下面,我将来描述基于ModernUI实现的一个通用界面框架,这个界面框架允许程序员在自己的业务模块中配置需要显示的界面元素。
2 通用界面框架实现思路
我希望能够实现这样的通用界面框架:
(1)程序员可以直接实现需要展现业务逻辑的界面,不需要关注如何使用ModernUI;
(2)程序员可以通过简单的配置就可以将自己实现的业务逻辑页面显示在主界面中;
(3)这个界面框架可以完全复用。
当我看到ModernUI这个界面库时,我希望将应用程序做成模块化,每一个模块能够:
(1)通过以下配置能够直接显示二级菜单。
(2)通过以下配置能够直接显示三级菜单。
这样做的好处是,开发插件的时候可以不需要关心界面框架插件;团队在协作开发应用的时候,可以独立开发并不需要修改主界面;团队成员的插件可以随时集成到这个主界面;当主界面无法满足我们的布局时或者用户需求无法满足时,可以直接替换主界面框架而不需要修改任何插件代码。
最终的效果如下,以下界面的几个菜单及点击菜单显示的内容由DemoPlugin插件、DemoPlugin2插件来提供。当插件框架加载更多插件时,界面上会出现更多的菜单;反之,当插件被卸载或者被停止时,则相应的菜单将消失掉。
下面我来介绍如何实现。
3 基于ModernUI和OSGi.NET的插件化界面框架实现原理及源码分析
3.1 OSGi.NET插件框架原理简介
OSGi.NET框架是一个完全通用的.NET插件框架,它支持WPF、WinForm、ASP.NET、ASP.NET MVC 3.0/4.0、控制台等任意.NET应用程序,也就是说,你可以基于该插件框架来快速构架插件化的应用程序。OSGi.NET插件框架提供了插件化支持、插件扩展和面向服务支持三大功能。
OSGi.NET插件框架启动时,从插件目录中搜索插件,安装并启动这些插件,将这些插件组装在插件框架中;一个插件可以暴露扩展点,允许其它插件在不更改其代码情况下,扩展该插件的功能;插件间可以通过服务来进行通讯。
在一个插件应用程序中,它首先要获取一个入口点,这个入口点由一个插件来提供,然后进入这个插件的入口并运行起来。一个提供入口的插件通常是一个主界面插件,比如上面介绍的这个WPF界面框架。也就是说,插件应用程序启动起来后,会先运行这个界面框架的主界面。而主界面一般都提供了关于界面元素的扩展,允许其它插件将菜单、导航和内容页面注册到主界面,因此,当主界面运行时,它会将其它插件注册的界面元素显示出来。当用户点击界面元素时,插件框架就会加载这个插件的页面,某个插件的页面在呈现时,则有可能会从数据库中提取数据展示,这时候,该插件则可能会调用数据访问服务提供的通用数据访问接口。OSGi.NET提供的三大功能,刚好能够非常的吻合这样的系统的启动形式。当然,OSGi.NET除了提供插件三大支撑功能之外,它还支持插件动态性与隔离性。动态性,意味着我们可以在运行时来动态安装、启动、停止、卸载和更新插件,而隔离性则意味着每一个插件都拥有自己独立的目录,有自己独立的类型加载器和类型空间。
基于OSGi.NET插件框架,我们很容易实现插件的动态安装、远程管理、自动化部署、自动升级和应用商店。下面,我来描述如何使用OSGi.NET来构建一个WPF插件应用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询