现在的位置: 首页 > 综合 > 正文

信息系统开发平台OpenExpressApp - AutoUI自动生成界面

2013年03月19日 ⁄ 综合 ⁄ 共 15250字 ⁄ 字号 评论关闭
文章目录

  下图为OpenExpressApp的系统架构图,其中在UI层支持WPF和ASP.NET MVC,目前首先实现了对WPF的支持。在《信息系统开发平台OpenExpressApp - 理解核心元素ObjectView》中的ObjectView的生成控件功能都是委托给AutoUI静态类库来完成的,本篇将讲解AutoUI功能。

应用模型贯穿于整个架构层

哪些地方调用了AutoUI静态类 

  •  

    ListObjectView中树形列表视图的TreeListEditor的CreateControl,调用了AutoUI.CreateTreeListControl生成TreeLi st控件

   public class TreeListEditor : ListEditor
    {
        public override object CreateControl()
        {
            Control 
= AutoUI.CreateTreeListControl(BOType, View);
      ...
   }
   }
  • ListObjectView中Grid列表视图的ListEditor的CreateControl,调用了AutoUI.CreateListControl生成Grid控件

   

  public class ListEditor
    {
           public virtual object CreateControl()
        {
            Control 
= AutoUI.CreateListControl(BOType, View);
      ...
     }
 }  

  • DetailObjectView的CreateControl调用AutoUI.CreateDetailView生成对象编辑详细面板


 public class DetailObjectView : ObjectView
   {    
        public override object CreateControl()
        {
            var control 
= AutoUI.CreateDetailView(BOType, thistrue);
            
return control;
        }
   }
  • NavigateQueryObjectView的CreateControl调用AutoUI.CreateDetailView生成对象导航详细面板

 public class DetailObjectView : ObjectView
   {    
        public override object CreateControl()
        {
            var control 
= AutoUI.CreateDetailView(BOType, thistrue);
            
return control;
        }
   }
  • 模块和View通过CreateMainToolBar、CreateChildToolBar自动生成工具条


AutoUI静态类方法介绍

CreateDetailView

CreateDetailView生成详细信息视图,生成结果是一个DockPanel,分为上下两部分,上面部分是AutoGrid,用来显示详细属性编辑器控件,下面部分是子对象列表信息区域。

详细信息区域

通过对象标识【ShowInDetail】来判断是否需要显示该属性,如果需要显示,则通过属性编辑器来生成具体的控件,然后布局在AutoGrid中

Code

子对象区域

如果有子对象,则生成一个子对象区域,现在是生成页签样式,每个子对象分别一个Tab页面,子对象又可以层级生成子对象。

Code

在生成子对象时,需要考虑生成子对象工具条、导航面板、布局等

Code

CreateListControl

CreateListControl生成DataGrid列表控件,通过对象类属性标识为【ShowInList】或者【ShowInLookup】来动态生成列,具体列编辑和显示控件由属性对应的GridColumn来完成。

Code

CreateTreeListControl

CreateTreeListControl生成树形控件。由于树形控件支持多对象显示,现在生成时是采用一种简便的算法,如果各对象的属性Name一样,则认为显示在同一列中;父对象的属性排在前面。

Code

CreateMainToolBar、CreateChildToolBar

CreateMainToolBar生成根对象工具条,系统根据当前对象类型的相关设置在Command注册库中查找并自动添加

Code

CreateChildToolBar生成子对象工具条,这个方法一般在前面介绍的CreateDetailView方法中生成子对象区域时使用。

具体编辑器控件生成

AutoUI静态类方法主要是生成Grid、TreeGrid、Panel等大的控件,具体针对每个属性的编辑和显示控件是由属性编辑器、GridColumn和TreeColumn来生成的,而GridColumn和TreeColumn的具体编辑控件又是由属性编辑器来生成的,所以属性编辑器是AutoUI内部的重要部分。

抱歉!评论已关闭.