XAF-如何修改内置的编辑器(Property Editor)
本示例演示在web/win中给 日期选择控制显示出一个时钟及修改时间的控件。效果如下:
如果你装了XAF在这个路径中已经有了这个示例:
%PUBLIC%\Documents\DevExpress Demos 16.2\Components\eXpressApp Framework\FeatureCenter.
在线也有一个版本: http://demos.devexpress.com/XAF/FeatureCenter/.
一、继承属性编辑器
在 ASP.NET 模块项目中,建个新类出来,继承ASPxDateTimePropertyEditor 类。
using System; using System.Web.UI.WebControls; using DevExpress.Web; using DevExpress.ExpressApp.Model; using DevExpress.ExpressApp.Editors; using DevExpress.ExpressApp.Web.Editors.ASPx; //... [PropertyEditor(typeof(DateTime), false)] public class CustomDateTimeEditor : ASPxDateTimePropertyEditor { public CustomDateTimeEditor(Type objectType, IModelMemberViewItem info) : base(objectType, info) { } protected override void SetupControl(WebControl control) { base.SetupControl(control); if(ViewEditMode == ViewEditMode.Edit) { ASPxDateEdit dateEdit = (ASPxDateEdit)control; dateEdit.TimeSectionProperties.Visible = true; dateEdit.UseMaskBehavior = true; } } }
如果是win项目:
using DevExpress.Utils; using DevExpress.XtraEditors.Repository; using DevExpress.ExpressApp.Editors; using DevExpress.ExpressApp.Model; using DevExpress.ExpressApp.Win.Editors; //... [PropertyEditor(typeof(DateTime), false)] public class CustomDateTimeEditor : DatePropertyEditor { public CustomDateTimeEditor(Type objectType, IModelMemberViewItem info) : base(objectType, info) { } protected override void SetupRepositoryItem(RepositoryItem item) { base.SetupRepositoryItem(item); RepositoryItemDateTimeEdit dateProperties = (RepositoryItemDateTimeEdit)item; dateProperties.CalendarTimeEditing = DefaultBoolean.True; dateProperties.CalendarView = CalendarView.Vista; } }
二、应用这个编辑器
上面的代码写完了,编译一下,重新打开xafml.
找到bo,找到日期型属性,在PropertyEditor中找到CustomDateTimeEditor.
在xafml中设置日期属性的displayformat和editmask
或直接在bo中设置。
using DevExpress.ExpressApp.Model; //... [ModelDefault("DisplayFormat", "{0:MM.dd.yyyy hh:mm:ss}")] [ModelDefault("EditMask", "MM.dd.yyyy hh:mm:ss")] public DateTime CreatedOn { get; set;}
运行项目,去看结果吧!
win的效果如下:

XAF开发成品案例参考
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
作者博客: http://www.cnblogs.com/foreachlife
欢迎加入CIIP框架\XAF技术应用交流群: 336090194 群文件中有更多相关工具及文档资料
转载请注明出处。多谢!
欢迎加我微信: admiralcn 或扫码:

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端