EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

访问UI元素及其控件的方法

本主题描述如何访问UI元素,例如“视图项”,“列表编辑器”,“属性编辑器”及其基础控件。

创建一个自定义ViewController后代(或通用ViewController <ViewType>ObjectViewController <ViewType,ObjectType>),并从以下几节中实现一种解决方案:

查看项目和属性编辑器的任务

获取ViewItem或Property Editor对象

使用ViewController.Activated事件处理程序中的CompositeView.FindItem(String)方法或重写的ViewController.OnActivated虚拟方法。视图项的名称应与相应的视图|匹配。CompositeView | 物品| ViewItem模型节点的ID属性。默认的属性编辑器ID与属性名称匹配。

示例访问编辑器设置| 如何:访问仪表板控件


获取View的ViewItem对象集合

使用ViewController.Activated事件处理程序中的CompositeView.Items属性或重写的ViewController.OnActivated虚拟方法。


获取特定类型的所有ViewItem对象

使用ViewController.Activated事件处理程序中的CompositeView.GetItems <T>方法或重写的ViewController.OnActivated虚拟方法。

示例如何:访问ASPxDocumentViewer和ASPxWebDocumentViewer控件如何:访问ReportViewer控件


访问视图项的基础控件

在ViewItem.ControlCreated事件处理程序中使用ViewItem.Control属性。您还可以使用重写的ViewItem.OnControlCreated虚拟方法访问自定义View Item的控件。

示例访问编辑器设置| 访问移动编辑器设置


访问嵌入式或嵌套视图的视图项

使用ViewController.Activated事件处理程序中的NestedFrame.ViewItem属性或重写的ViewController.OnActivated虚拟方法。

示例如何:初始化使用New Action创建的对象如何:访问主详细信息视图和嵌套列表视图环境


自定义全局使用在列表视图和详细信息视图中的属性编辑器的控件

创建属性编辑器的后代并对其进行自定义。将自定义属性编辑器应用于模型编辑器中的目标属性。您也可以将此属性编辑器用于特定类型的所有属性。

示例:如何:自定义内置属性编辑器(WinForms | ASP.NET


访问ViewItem的父视图

使用ViewController.Activated事件处理程序中的ViewItem.View属性或重写的ViewController.OnActivated虚拟方法。


访问布局控件及其项目

请按照“查看项目布局自定义”主题的“访问布局控制”部分中的步骤进行操作。


列表编辑器的任务

获取ListEditor对象

使用ViewController.Activated事件处理程序中的ListView.Editor属性或重写的ViewController.OnActivated虚拟方法。

例如访问网格控件属性| 访问列表控件属性


访问列表编辑器的基础控件

XAF提供了各种特定于平台的列表编辑器。每个编辑器都有用于访问编辑器控件的属性,方法和事件。处理View.ControlsCreatedListEditor.ControlsCreatedViewController.ViewControlsCreated事件,并在处理程序中使用此API。

示例ListEditor.Control | 如何:访问列表编辑器的控件


访问列表编辑器的数据单元格控件

对于所有列表编辑器,没有通用的解决方案。列表编辑器可以实例化内部属性编辑器,以在视图和编辑模式下将设置传播到基础数据单元控件。使用列表编辑器的成员或直接自定义其基础控件,如控件文档中所述。如果要全局自定义列表视图和详细视图的控件,请参阅“全局自定义列表和详细视图的属性编辑器的控件”部分。

示例ComplexWebListEditor.FindPropertyEditor | 如何将未绑定的列添加到GridListEditor


具有复杂视图项的任务

访问详细视图布局中包含的操作的控件

要访问ActionContainerViewItem的控件,请遵循“如何:将操作包括到详细视图布局”主题中的指示。


访问ListPropertyEditor的控件

  1. 使用ViewController.Activated事件处理程序中的CompositeView.FindItem(String)方法或重写的ViewController.OnActivated虚拟方法,并将返回的值强制转换为ListPropertyEditor。
  2. 处理ListPropertyEditorControlCreated事件。
  3. 在事件处理程序中,使用ListPropertyEditorListView属性获取基础的List View。
  4. 处理基础列表视图的View.ControlsCreated事件。
  5. 在事件处理程序中,使用ListView.Editor属性获取一个Editor。
  6. 使用此编辑器的方法或属性(例如WinColumnsListEditor.Grid)访问控件。
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Editors;
using DevExpress.ExpressApp.Win.Editors;
using DevExpress.XtraGrid;
// ...
public class MyViewController : ViewController<ListView> {
    protected override void OnActivated() {
        base.OnActivated();
        ListPropertyEditor editorForCollectionProperty = View.FindItem("CollectionProperty") as ListPropertyEditor;
        editorForCollectionProperty.ControlCreated  = (s, e) => {
            ListView nestedListView = ((ListPropertyEditor)s).ListView;
            nestedListView.ControlsCreated  = (s1, e1) => {
                GridListEditor gridListEditor = ((ListView)s1).Editor as GridListEditor;
                if (gridListEditor != null) {
                    GridControl grid = gridListEditor.Grid;
                }
            };
        };
    }
}

访问DetailPropertyEditor或DashboardViewItem的控件

  1. 使用ViewController.Activated事件处理程序中的CompositeView.FindItem(String)方法或重写的ViewController.OnActivated虚拟方法,并将返回值强制转换为DetailPropertyEditor或DashboardViewItem。
  2. 处理DetailPropertyEditorDashboardViewItemViewItem.ControlCreated事件。
  3. 在事件处理程序中,使用DetailPropertyEditorDashboardViewItemFrame属性访问其嵌套框架。
  4. 使用NestedFrame.ViewItem属性获取嵌套视图的视图项。
  5. 使用ViewItem.Control属性访问控件。
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Editors;
// ...
public class MyViewController : ViewController<DetailView> {
    protected override void OnActivated() {
        base.OnActivated();
        DetailPropertyEditor editorForReferenceProperty =
        View.FindItem("ReferenceProperty") as DetailPropertyEditor;
        editorForReferenceProperty.ControlCreated  = (s, e) => {
            NestedFrame nestedFrame = ((DetailPropertyEditor)s).Frame as NestedFrame;
            ViewItem nestedFrameViewItem = nestedFrame.ViewItem;
            if (nestedFrameViewItem.Control != null) { /* ... */ }
        };
    }
}

附加信息

  • XAF在应用程序中使用DevExpress WinForms,ASP.NET控件和DevExtreme Mobile小部件。您可以使用它们的成员来访问和自定义这些控件和小部件。如果需要帮助,请支持中心提交新票证,并在“平台/类别”字段中指定控件的平台。
  • 如果您按照前几节中的描述自定义控件,但此操作没有生效,请处理以下特定于平台的事件之一:

    WinForms

    ASP.NET

    在ASP.NET应用程序中,您还可以在客户端上执行特定的自定义(请参阅客户端功能概述)。

  • 大多数内置的“视图项”和“编辑器”还提供用于访问控件的属性(例如GridListEditor.GridASPxPropertyEditor.EditorASPxLookupPropertyEditor.DropDown等)。仅当在本主题和控件的文档中没有针对您的方案的解决方案时,才使用索引(control.Controls [index])遍历控件层次结构并访问内部控件。
  • 如果自定义现有控件的“应用程序模型”选项,则此自定义控件在下一次创建之前不会影响。在创建和呈现控件之前,直接自定义控件或其相应的“应用程序模型”选项。

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