以Model为核心的表单设计器的思路

在之前的文章中介绍过一些表单设计器的思路和想法。在上一篇文章:零代码平台实现中说到我要实现一个功能强大的表单设计工具。经过几天思考,觉得以Model为核心去实现表单设计器思路既简单也很清楚。这篇文章我将谈谈如何以Model为核心去实现表单设计器。

设计思路:

    之所以会我想到以Model为核心,主要借鉴Asp.net MVC框架。ASP.NET MVC中控制器向View提供Model。View将Model渲染成表单。有一点不好的是生成的View中夹杂了HTML和C#代码,没有了ASP.Net Web Form的用户控件,所以就不能去可视化拖拽了,看下面ASP.net MVC生成表单的两张图。

    简单的List页面:

 

    Detail页面:

    从上图中可以看出不存在控件,那就不能可视化的拖拽。

    我做这个设计器的目的之一就是解决这个不能拖拽的问题,先对比一下asp.net表单生成机制和我的表单设计器的机制:

    从上图可以看出两种机制是差不多的。

    mvc中有ModeL和ViewModel两个概念。Model是一般都固定不变的,编译之后就会存在dll,所以通过下面代码使用反射来生成表单。

复制代码
1  System.Windows.Forms.OpenFileDialog dlg  = new  System.Windows.Forms.OpenFileDialog(); 
2  dlg.AutoUpgradeEnabled  = false ;
3  if  (dlg.ShowDialog()  ==  System.Windows.Forms.DialogResult.OK)
4  {
5  string  fileName  =  dlg.FileName;
6  txtPath.Text  =  fileName;
7  System.Reflection.Assembly ass;
8  Type[] types;
9  ass  =  System.Reflection.Assembly.LoadFile(fileName); // 要绝对路径
10  // 获取所以的实体类
11     types  =  ass.GetTypes();
12  foreach (Type type  in  types)
13  {
14  ListBoxItem li  = new  ListBoxItem();
15  li.Content  =  type.Namespace + " . " + type.Name;
16  lbxModel.Items.Add(li);
17 
18  }
19 
20 
21 
22  }
复制代码

     对于ViewModel,我计划先使用SQL语句生成ViewModel的结构和代码,然后生表单。

    Model方式界面:

 

   ViewModel方式界面:

 

简单示例:

    看个例子,实体类代码如下:

复制代码
1  public class  Person
2  {
3  public string  Name
4  {
5  get ;
6  set ;
7  }
8 
9  public int  Age
10  {
11  get ;
12  set ;
13  }
14 
15  public string  Sex
16  {
17  get ;
18  set ;
19  }
20  }
复制代码

    在List页面,我生成一个固定的Grid和以下常用的工具栏按钮如:新增、修改、删除...,如下如。

 

   对于修改页面、详情页面等,我生成label+textbox组合方式的表单。

下面我们就可以自由调整界面了:

调整之后的一级界面

 

调整之后的二级界面

最后通过代码生成机制生成aspx代码。

总结:这个是我思考出的一个表单设计器的解决方案,感觉比较简单而且比较通用,故写这篇文章做为一个分享。考虑不周的地方期待大家多多指正。







本文转自麒麟博客园博客,原文链接:http://www.cnblogs.com/zhuqil/archive/2010/09/24/model-wpf-form-designer.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/337687

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。