XAF框架学习:如何创建业务实体类和菜单页面视图布局
我们上一篇学习了如何创建XAF项目,感兴趣可以查看:https://www.cnblogs.com/xielong/p/16004570.html
接下来,我们学习如何创建XAF项目的实体类
1)找到 项目名.Module,在文件BusinessObject创建实体类(FruitsBase、Apples、Bananas)
FruitsBase基类如下
using DevExpress.ExpressApp.DC; using DevExpress.Persistent.Base; using DevExpress.Persistent.Validation; using DevExpress.Xpo; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace XAFStudyDemo.Module.BusinessObjects { [XafDisplayName("水果基类")] [NonPersistent] public class FruitsBase: XPBaseObject { public FruitsBase(Session s) : base(s) { } [XafDisplayName("自增ID")] [Key(AutoGenerate = true),Browsable(false)] public int GID { get { return GetPropertyValue<int>(nameof(GID)); } set { SetPropertyValue(nameof(GID), value); } } [XafDisplayName("水果编号")] public string Code { get { return GetPropertyValue<string>(nameof(Code)); } set { SetPropertyValue(nameof(Code), value); } } [XafDisplayName("水果名称")] [RuleRequiredField("RuleRequiredField.FruitsBase.Name", DefaultContexts.Save, "名称不能为空")] public string Name { get { return GetPropertyValue<string>(nameof(Name)); } set { SetPropertyValue(nameof(Name), value); } } [XafDisplayName("水果种类")] public EnumFruitType Type { get { return GetPropertyValue<EnumFruitType>(nameof(Type)); } set { SetPropertyValue(nameof(Type), value); } } [XafDisplayName("水果介绍"), Size(2000)] public string Desc { get { return GetPropertyValue<string>(nameof(Desc)); } set { SetPropertyValue(nameof(Desc), value); } } [XafDisplayName("水果图片")] [ImageEditor(ImageEditorMode.PopupPictureEdit, ImageEditorMode.PictureEdit)] public byte[] ImageData { get { return GetPropertyValue<byte[]>(nameof(ImageData)); } set { SetPropertyValue(nameof(ImageData), value); } } [XafDisplayName("水果产地")] public string Place { get { return GetPropertyValue<string>(nameof(Place)); } set { SetPropertyValue(nameof(Place), value); } } [XafDisplayName("创建人")] public string Creater { get { return GetPropertyValue<string>(nameof(Creater)); } set { SetPropertyValue(nameof(Creater), value); } } [XafDisplayName("创建时间")] public DateTime CreateTime { get { return GetPropertyValue<DateTime>(nameof(CreateTime)); } set { SetPropertyValue(nameof(CreateTime), value); } } [XafDisplayName("推荐价格")] public decimal Price { get { return GetPropertyValue<decimal>(nameof(Price)); } set { SetPropertyValue(nameof(Price), value); } } } /// <summary> /// 水果种类 /// </summary> public enum EnumFruitType { [XafDisplayName("苹果")] One = 1, [XafDisplayName("香蕉")] Two = 2, [XafDisplayName("葡萄")] Three = 3, [XafDisplayName("火龙果")] Four = 4, [XafDisplayName("龙眼")] Five = 5, } }
Apples类继承FFruitsBase类,如下
using DevExpress.ExpressApp.DC; using DevExpress.Persistent.Base; using DevExpress.Xpo; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace XAFStudyDemo.Module.BusinessObjects { [XafDisplayName("苹果管理")] [DefaultClassOptions] public class Apples : FruitsBase { public Apples(Session s) : base(s) { } } }
2)运行后,自动创建苹果管理、香蕉管理的两个菜单的三种视图(ListVew、DetailView、lookupView),默认视图布局如下:
2.1)列表视图
2.2)详情视图
3)更改视图默认布局(ListVew、DetailView、lookupView)
3.1)找到 项目名称.Win(XAFStudyDemo.Win)--> Model.xafml ,打开 Model.xafml 文件
3.2)再查找,项目名称(XAFStudyDemo)--> Views--> XAFStudyDemo.Module.BusinessObjects --> Apples
3.3)找到Apples_ListVIew视图,更改列表页面布局(Apples_ListVIew-->Columns )
原先默认布局
更改列表布局
3.4)找到Apples_DetailVIew视图,更改详情页面布局(Apples_DetailVIew-->Layouts)
原先默认布局
更改详情布局
3.5)找到Apples_LookupListVIew视图,更改列表页面布局(Apples_LookupListVIew-->Columns )
参考列表视图和详情视图设置
4)查看更改视图效果
4.1)列表视图
4.2)详情视图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异