XAF应用开发教程(四)应用程序模型
XAF是重量型框架,确实够重量的,方方面面都做得规规矩矩。
如果看了前面三节,可能会认为,这N多的Attribute到底都是从哪里来的?到底有多少这样的Attribute?如果不够用了怎么办?等着官方开发吗?
好吧,我不是为了解决上面的这些问题的,从另一个角度来看一下我们的应用程序吧!
我们回过头来看看解决方案中的项目都是做些什么用途吧:

XAF的默认项目结构中,XCRMDemo.Module中写了代码,就会同时生成了web和win项目。
也就是说,上图中的模块是从上到下的继承关系。
但实事上,做过开发的朋友都知道,web中显示的textbox和win中显示的textbox是完全不同的控件,一个是html支持的,一个是winform中的控件。
XAF只是把他们做成了同一个名称的控件,让类型与控件有了对应关系,但有些时候,Web下面和Win下面可能并没有一个同样功能的控件,比如我使用了第三方的控件Excel编辑控件,但我只找到了Win版本,没有Web版本,这时,我们只能把控件扩展写到XCRMDemo.Win.Module中去。
再来看看应用程序模型,展开XCRMDemo.Module项目,双击Model.DesignedDiffs.xafml文件,可以看到:
如果你是从上面章节中下载的源码,请编译一次ctrl+shift+B

可以看到,这里可以控制着应用程序中的方方面面功能。
其中,ActionDesign,是对按钮进行设置的,比如之前开发中使用过的New按钮,Save,SaveAndClose等等。
假如我们想要开发的系统仅有中文,也可以直接在这里修改进行汉化。
为了展示效果,我做个简单的修改设置:

如上图所示,我将Cancel的标题,即为在界面上显示的文字修改为“取消”
并用同样的方法将,Delete,New,Save等几个按钮都做修改。

可以看到已经有了变化。
Views:这个是使用频率很高的结点,可以设置视图的多数信息,布局,控件可用,按钮隐藏等等 。
在XAF中,共有4种视图类型:
列表视图
详细视图
搜索视图
DashboardView
其实在过去的章节中,除了DashboardView以外,我们都已经见过了。例如上图就是列表视图,点击新建按钮,出现的就是详细视图。
在客户类中,点击选择客户分类的弹出窗口,就是搜索视图。
视图都是根据业务模型推导出来的。也就是说,在BOModel中做的设置,将会生效于BOModel的视图,举例说明:
我们已经写了客户类,在界面上任何地方显示的都是“客户”这两个字,下面我们把文字改成客户信息。

看列表视图效果:

看详情视图效果:

可以看出列表和详细视图经过一次修改都被改变了,这里只是演示标题,看起来是非常简单的,但如果要修改的是其他信息,这个过程其实是非常有用的,一次修改多处变化,不用像普通的开发一样反复的修改很多次。
来再看看视图的修改:

按图上的路径打开详细视图设置,可以看到右侧的属性设置窗口,其中包含了很多设置,AllowDelete\AllowEdit\AllowNew这些,可以直接控制视图上的按钮显示情况。
此时修改Caption,则只会影响详细视图了。
BOModel是用于模型的设置,指我们建的类,客户,业务对象,DomainObject这些名词都对应着模型,只是叫法不同。
CreatableItems:这里面的模型会在界面上出现一个下拉框,点击后直接调用了新建功能,显示出详细视图。
ImageSources:在导航菜单、各种视图中,会使用到图标信息,这里列出了相关信息。
Localization:这里列出了一部分需要本地化的内容。
NavigationItems:之前在代码中使用过[NavigationItem("基础信息")]这样的Attribute,事实上它是指示此处的NavigationItems的创建,是个树形结构,可以更直观的进行操作修改出想要的结构。
Validation:可以看到系统中用到的所有验证规则,这里还没有演示过,后续将在代码中给出示例。
ViewItems:系统已经存在的编辑器与类型的对应关系,一般不会在这里作修改。
QQ:4603528 QQ群:336090194
XAF应用开发教程(四)应用程序模型的更多相关文章
- 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo
原文:微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建 ...
- 开发教程(四) MIP组件平台使用说明
组件审核平台用于上传 MIP 组件.经过自动校验之后,提交审核,通过审核的组件会定时推送到线上,供网站使用. 平台地址:https://www.mipengine.org/platform/ 1. 使 ...
- XAF应用开发教程(七)外观控制模块
很多时候,我们需要按照不同的条件显示不同的效果,在传统的软件开发中,我们会直接使用 控件名称.BackColor,Enable,Visible等属性进行控制. 如果一个业务对象在多处使用,要么我们会去 ...
- XAF应用开发教程(一) 创建项目
XAF是DevExpress公司的快速开发框架,全称eXpress Application Framework,是企业信息系统的开发利器,快速开发效果显著,在.net框架中,笔者至今没有找到一款可以与 ...
- XAF应用开发教程-内置Attribute功能列表
在 XAF 框架,一些用来生成一个业务应用程序的信息是在Attribute中指定.您可以将属性应用到业务类 (或它的成员) 指定验证规则,指定如何对数据进行显示. 设置关系类等.本主题提供了有关在何处 ...
- XAF应用开发教程(五)验证模块
数据验证是应用程序开发中使用频率最高的功能模块,本节详细介绍一下XAF中如何使用验证模块. XAF 验证模块内置了下面的一些验证规则: 验证规则类型 说明 RuleCombinationOfPrope ...
- XAF应用开发教程(六)控制器
是的,XAF也是MVC结构的,但不仅限于MVC,ViewModel也存在,它是一项复合技术,AOP,ORM,MVC都有. 真实运行的系统中,仅有增删改查功能肯定是远远不够的,ERP.CRM等系统的开发 ...
- XAF应用开发教程(三)业务对象模型之引用类型与关联关系
本节介绍信息系统开发中最常见的问题,引用关系,一对多关系,多对多关系. 以客户信息为例,客户通常需要客户分类,如VIP客户,普通客户,潜在客户.当然,我们可以定义枚举类型进行定义出这个类型,并在客户类 ...
- XAF应用开发教程(二)业务对象模型之简单类型属性
使用过ORM的朋友对这一部分理解起来会非常快,如果没有请自行补习吧:D. 不说废话,首先,我们来开发一个简单的CRM系统,CRM系统第一个信息当然是客户信息.我们只做个简单 的客户信息来了解一下XAF ...
随机推荐
- HDU 4315:Climbing the Hill(阶梯博弈)
http://acm.hdu.edu.cn/showproblem.php?pid=4315 题意:有n个人要往坐标为0的地方移动,他们分别有一个位置a[i],其中最靠近0的第k个人是king,移动的 ...
- java 打印出99乘法口诀表
public class Mutiplay { /** *实现99乘法表 * @param args */ public static void main(String[] args) { Syste ...
- [算法]判断一个数是不是2的N次方
如果一个数是2^n,说明这个二进制里面只有一个1.除了1. a = (10000)b a-1 = (01111)b a&(a-1) = 0. 如果一个数不是2^n, 说明它的二进制里含有多一 ...
- Javascript中最常用的经典技巧
1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键<table border oncontextmenu= ...
- js实现图片的瀑布流
先看效果: 初始状态:
- UVa(11292),贪心水题
蓝书P1, 很简单的一个贪心选择,用能力小的去砍小的.本来想双重循环,哎,傻逼了,直接遍历选手,碰到能砍的就砍掉. #include <stdio.h> #include <algo ...
- 关于 android 中 postDelayed方法的讲解
代码如下: 这是一种可以创建多线程消息的函数 使用方法: 1,首先创建一个Handler对象 Handler handler=new Handler(); 2,然后创建一个Runnable对象 Run ...
- 网站性能优化之CSS无图片技术:三角形
1.使用CSS无图片技术,可以总结得到以下三个优点: 减少请求资源的大小: 减少http的请求个数: 提高可维护性. 一.CSS无图片技术,微博中有哪些实际应用呢? 通过上面的展示,我们可以看到,无图 ...
- 怎样解决:未找到路径“……”的控制器或该控制器未实现 IController?
就是要加上new{area=""},比如下面的: @{Html.RenderAction("Cartsummary","ShoppingCart&qu ...
- vs智能提示突然消失的解决办法 (vs2008 vs2010 vs2012 智能提示)
vs智能提示突然消失的解决办法 (vs2008 vs2010 vs2012 智能提示) 下面一段话是网上找到的解决方案: 重置Visual Studio可以解决此问题,方法是从开始->Micro ...