商信互联
eXpressApp Framework附带了一组不同的属性编辑器,它们涵盖了大多数数据管理方案(请参阅内置编辑器支持的数据类型)。此外,对于内置编辑器不适合您的情况,eXpressApp Framework支持使用自定义属性编辑器。本主题描述了内置的属性编辑器,并详细说明了如何实现自定义编辑器。eXpressApp框架随附的FeatureCenter演示的“属性编辑器”部分中演示了几个自定义的属性编辑器。默认情况下,此演示位于%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ FeatureCenter文件夹中。
要显示静态信息或任何未绑定到属性的控件,请实现一个“查看项”,而不是“属性编辑器”。请参阅“如何:实施视图项目”主题以了解如何执行此操作。
您可能出于以下原因之一考虑实现自定义属性编辑器:
自定义内置的属性编辑器的控件功能。
内置的XAF属性编辑器使用XtraEditors和ASPxEditors Suites提供的控件。这些控件支持许多功能,可以轻松地根据自己的喜好进行自定义。采用这些功能的一种方法是访问内置的Property Editor控件属性并对其进行修改(请参见Access Editor设置)。但是,如果需要重用自定义控件,则应通过从内置控件继承来实现自定义属性编辑器。
利用第三方控件。
如果您有控件要在应用程序中进行数据编辑,则唯一的方法是实现自定义属性编辑器。
支持自定义数据类型的管理。
例如,如果您具有Coord类型的业务类属性,则应实现自定义属性编辑器以显示该属性。
特定的数据管理情况。
例如,您可能需要实现具有自定义数据源访问权限的自定义属性编辑器。
要实现自定义属性编辑器,请从PropertyEditor类或其多个后代之一继承。
要了解用作属性编辑器基类的类,请参见下表。
基类 | 描述 |
---|---|
属性编辑器 | 实现平台无关的属性编辑器功能。如果需要为XAF内部不支持的平台开发属性编辑器,请从此类继承。在其他情况下,请使用以下类之一。 |
WinPropertyEditor,WebPropertyEditor或MobilePropertyEditor | 要使用自定义控件来实现Windows,Web或移动属性编辑器,请继承这些类。若要创建所需的控件,请重写CreateControlCore方法以及特定于WebPropertyEditor和MobilePropertyEditor后代的CreateEditModeControlCore和CreateViewModeControlCore方法。 |
DXPropertyEditor | 此类包含使用XtraEditors控件所需的基本功能。您可以重写两个方法:CreateControlCore和CreateRepositoryItem。前者创建一个XtraEditors控件以在“详细信息视图”中使用。后者为代表列表视图的XtraGrid控件创建一个存储库项目。该SetupRepositoryItem方法也可以被覆盖,以调整所共有的结合到网格列的存储库项目的属性,和一个XtraEditors控制在一个局部视图中。有关XtraEditors控件和“存储库项目”概念的更多信息,请参考XtraEditors。 |
BooleanPropertyEditor,StringPropertyEditor等 | 这些类派生自DXPropertyEditor类,以使用特定的数据类型。从这些类继承以添加所需的特定功能。 |
ASPxPropertyEditor | 此类包含使用ASPxGridView和Editors库中的编辑器所需的基本功能。您可以覆盖CreateEditModeControlCore和CreateViewModeControlCore方法,以分别在明细视图处于编辑模式和视图模式时创建要使用的控件。 |
ASPxBooleanPropertyEditor,ASPxStringPropertyEditor等 | 这些类派生自ASPxPropertyEditor类,以使用特定的数据类型。从这些类继承以添加所需的特定功能。 |
MobileBooleanPropertyEditor,MobileStringPropertyEditor等 | 这些类派生自MobilePropertyEditor类,以使用特定的数据类型。从这些类继承以添加所需的特定功能。 |
要在UI中使用自定义属性编辑器,必须将其加载到Application Model。在实现的属性编辑器模块项目,并与标PropertyEditorAttribute被自动加载到应用模式。使用模型编辑器,可以选择“属性编辑器”作为“视图” | “视图”的值。<DetailView> | 物品| <PropertyEditor>节点的PropertyEditorType属性。
另外,可以使用ViewItems | | Property | Property选择该属性编辑器作为特定类型属性的默认编辑器。属性编辑器| < PropertyEditor >节点的EditorType属性。
该属性编辑器属性指定您的属性编辑器是专为只有特定的数据类型。该属性具有多个参数,因此,您具有以下选项。
在某些情况下,您可以具有应在“详细视图”中可视化的对象,而不是使用一组标准的“属性编辑器”,而是使用特定的控件。在这种情况下,请基于控件创建自定义属性编辑器,并在目标业务类中声明其他属性。此属性应返回其包含对象的实例。要从列表视图中隐藏属性,请使用VisibleInListViewAttribute装饰它。自定义“详细信息视图”布局以隐藏除自定义“属性编辑器”以外的所有“属性编辑器”。
public class MyBusinessClass : BaseObject {
//...
[VisibleInListView(false)]
public MyBusinessClass Self {
get { return this; }
}
}
Public Class MyBusinessClass
Inherits BaseObject
'...
<VisibleInListView(False)> _
Public ReadOnly Property Self() As MyBusinessClass
Get
Return Me
End Get
End Property
End Class
这样,将使用“列表视图”中的一组属性来显示您的对象,而“细节视图”中的对象将使用特定的控件来可视化。
以下主题更详细地说明了不同的自定义“属性编辑器”实现案例。