EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

确定按钮的控制器和标识符

如果您想自定义的行动由XAF(或第三方模块)提供的,你应该知道哪些控制器提供了这种操作。知道Controller后,可以使用Frame.GetController <ControllerType>方法重写它或访问它,并处理所需的事件。在某些情况下,您可能还需要操作的标识符(例如,创建条件外观规则)。本主题描述如何确定承载特定操作的控制器以及如何获取操作标识符。

在运行时确定控制器和标识符

在应用程序中执行动作时,动作信息将显示在Visual Studio输出窗口中(并且也将附加到日志文件中)。

04.09.14 11:57:49.966执行动作

04.09.14 11:57:49.968类型:DevExpress.ExpressApp.Actions.SingleChoiceAction

04.09.14 11:57:49.970 ID:ChooseSkin

04.09.14 11:57:49.972类别:外观

04.09.14 11:57:49.974 Controller.Name:DevExpress.ExpressApp.Win.SystemModule.ChooseSkinController

04.09.14 11:57:49.975 Context.Name:联系人

04.09.14 11:57:49.976 Context.IsRoot:正确

04.09.14 11:57:49.978 Context.SelectedObjects.Count:0

04.09.14 11:57:49.980 Context.CurrentObject:<未指定>

04.09.14 11:57:49.983 SelectedItem:Visual Studio 2013蓝色

04.09.14 11:57:50.377动作“ ChooseSkin”完成

在这里,Controller.Name值是执行的Action的Controller的名称,ID值是Action的标识符。

在设计时确定控制器

如果知道Action的标识符,则可以使用ActionDesign | IModelAction.Controller属性在模型编辑器中确定Action的控制器。动作| <Action>节点。在模型编辑器中,动作标识符(请参阅ActionBase.Id)用作动作节点标题,而不是在UI中可见的标题。因此,要轻松定位“动作”是“模型编辑器”,您必须知道其标识符。

IModelAction.Controller

如果标识符未知,请使用IModelAction.Caption属性,该属性指定对用户可见的Action标题,以检查这是否是您要查找的Action。

通过动作属性添加的动作

通过ActionAttribute定义的动作是在运行时由ObjectMethodActionsViewController生成的。这些动作的标识符使用以下模式形成:

<business_class_short_name>。<action_method_name>

如果Action方法采用参数,则方法参数类型名称也将被附加。

<business_class_short_name>。<action_method_name>。<parameter_type_short_name>

例如,要通过MarkCompleted方法访问在Task业务类中声明的Action ,请使用以下代码:

using DevExpress.ExpressApp.SystemModule;
using DevExpress.ExpressApp.Actions;
// ...
ObjectMethodActionsViewController controller = Frame.GetController<ObjectMethodActionsViewController>();
if (controller != null) {
    SimpleAction markCompletedAction = controller.Actions["Task.MarkCompleted"] as SimpleAction;
    // ...
}

为了避免从代码访问现有Controller时可能出现的空引用异常,请始终确保XafApplication.OptimizedControllersCreation属性为true时,Frame.GetController <ControllerType>方法的结果不为null

要使用PostponeParametersObject类型参数通过Postpone方法访问在Task业务类中声明的Action ,请使用以下代码:

using DevExpress.ExpressApp.SystemModule;
using DevExpress.ExpressApp.Actions;
// ...
ObjectMethodActionsViewController controller = Frame.GetController<ObjectMethodActionsViewController>();
if (controller != null) {
    PopupWindowShowAction postponeAction = controller.Actions["Task.Postpone.PostponeParametersObject"] as PopupWindowShowAction;
    // ...
}

列出内置控制器及其操作的帮助主题

您可以本文档的“内置控制器和操作”部分中进行搜索,以找到所需的操作及其控制器。

注意

您还可以在默认情况下安装到%PROGRAMFILES(x86)%\ DevExpress 19.2 \ Components \ Sources \的XAF源中按其标识符或标题搜索动作。

相关文章

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