EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

自定义应用程序UI和行为

在XAF中,业务模型定义数据库结构和UI外观。对持久类的更改会影响UI。例如,如果将新属性添加到业务类,则新编辑器将添加到列表和详细信息表单。

您可以使用自动生成的UI或根据您的业务需求和方案对其进行自定义。本主题描述如何自定义应用程序的外观和行为。

自定义应用程序UI元数据

在代码中使用属性

内置的属性,让您编辑应用程序模型,创建控件,并定制业务模式的外观和行为(验证,可见性,字段等的格式),在商业模式的代码。使用这种声明性方法,您可以仅添加一行代码,而无需使用设计器或创建Controller

FieldSizeAttribute应用于TestimonialQuote字符串属性,并将Unlimited作为该属性的参数传递,以将单行编辑器替换为多行编辑器。

public class Testimonial
{
    // ...
    string quote;
    [FieldSize(FieldSizeAttribute.Unlimited)]
    public string Quote {
        get { return quote; }
        set { SetProperty(ref quote, value); }
    }
    // ...
}

运行WinForms或ASP.NET应用程序,然后打开“证明详细信息视图”。下图说明了标准和自定义的UI:

spm_testimonial

注意

SimpleProjectManager演示项目提供了如何使用这种方法更多的例子。此演示安装在%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ SimpleProjectManager \ CS \ SimpleProjectManager.Module \ BusinessObjects \中

请注意,此方法将XAF程序集的依赖项添加到数据访问层(DAL)

使用模型设计器

如果您不想在业务模型代码中定义应用程序的UI结构和行为,请编辑应用程序元数据(XAF- Application Model)。每个项目都将元数据及其自定义内容存储为* .xafml文件中的XML标记。这些文件构成了应用程序模型的分层结构。您可以在模型编辑器设计器,文本或XML编辑器中打开XAFML文件。

请按照以下步骤更改客户业务对象的图像,并通过模型编辑器在导航控件中启用图像:

  1. 解决方案资源管理器中,右键单击SimpleProjectManager.Module项目,然后在上下文菜单中选择“打开模型编辑器”,或双击带有XAFML扩展名的文件。
  2. 在模型编辑器中,导航到BOModel |。树中的Customer节点,并将ImageName属性设置为BO_Customer

    SPM_ME

  3. 打开SimpleProjectManager.Win项目的XAFML文件,导航到NavigationItems节点并将ShowImages属性设置为true

    SPM_ShowImages

  4. SimpleProjectManager.Web项目重复上一步。

  5. 在Visual Studio工具栏中单击“全部保存”以保存所做的更改。

下图说明了结果-导航控件显示Customer的BO_Customer图标和其他导航项和组的默认图标。

SPM_Customer

对于WinForms和ASP.NET应用程序,ShowImages选项的默认值(false)是在它们的XAFML文件中定义的。应用程序项目中的设置将覆盖与平台无关的设置。在上面的示例中,在应用程序级别上为两个应用程序都更改了此选项。

注意

请参阅%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ SimpleProjectManager文件夹中的XAFML文件,以查看更多自定义示例。

定义自定义逻辑和UI元素

使用模型编辑器和内置属性,可以更改UI元素和控件的选项。其他定制只能在代码中实现。例如,您可以使用Controllers and Actions机制来替换应用程序的默认UI部件或实现自定义业务逻辑。

控制器是可用于更改应用程序流程,自定义UI元素以及实现自定义最终用户交互的组件。控制器还可以包含Actions。操作在UI中显示为交互元素(按钮,菜单项等),并执行自定义业务逻辑。

请按照以下步骤实施一个SimpleAction,该操作允许用户将选定的Project Tasks标记为已完成,并将EndDate属性设置为当前日期和时间:

  1. 解决方案资源管理器中,右键单击SimpleProjectManager.Module \ Controllers文件夹,然后选择“添加” |“添加”。类...在上下文菜单中。将类名称设置为ProjectTaskController
  2. 将创建的类代码替换为以下内容:

    using System;
    using DevExpress.Data.Filtering;
    using DevExpress.ExpressApp;
    using DevExpress.ExpressApp.Actions;
    using SimpleProjectManager.Module.BusinessObjects.Planning;
    
    namespace SimpleProjectManager.Module.Controllers {
        public class ProjectTaskController : ViewController {
            public ProjectTaskController() {
                TargetObjectType = typeof(ProjectTask);
                TargetViewType = ViewType.Any;
                SimpleAction markCompletedAction = new SimpleAction(
                    this, "MarkCompleted",
                    DevExpress.Persistent.Base.PredefinedCategory.RecordEdit){
                        TargetObjectsCriteria = 
                        (CriteriaOperator.Parse("Status != ?",ProjectTaskStatus.Completed)).ToString(),
                        ConfirmationMessage =
                                "Are you sure you want to mark the selected task(s) as 'Completed'?",
                        ImageName = "State_Task_Completed"
                    };
                markCompletedAction.Execute  = (s, e) => {
                    foreach(ProjectTask task in e.SelectedObjects) {
                        task.EndDate = DateTime.Now;
                        task.Status = ProjectTaskStatus.Completed;
                        View.ObjectSpace.SetModified(task); 
                    }
                    View.ObjectSpace.CommitChanges();
                    View.ObjectSpace.Refresh();
                };
            }
        }
    }
    
显示API说明

下图显示了WinForms和ASP.NET应用程序中的MarkCompleted操作。

SPM_Action

MarkCompleted行动遍历所选对象并修改其属性。之后,它将更改提交到数据库并刷新屏幕。

或者,您可以...

  • 使用模板库中的View Controller模板创建一个Controller。在这种情况下,您可以在设计器中添加一个Action而不是编写代码。有关此方法的更多信息,请参考“添加简单操作”主题。
  • 实现通用的ObjectViewController <ViewType,ObjectType>控制器,而不是ViewController。对于ObjectViewController,您可以在通用ViewTypeObjectType参数中指定应为此控制器激活的视图和对象的类型。
  • 使用ActionAttribute直接从业务类方法创建操作。请参阅使用属性添加简单操作主题,以获取有关此方法的更多信息。

下一主题: 重用实现的功能

相关文章

转载保留此链接,注明出处