[Expand]General Information
[Expand]WinForms Controls
[Expand]ASP.NET Controls and MVC Extensions
[Expand]ASP.NET Bootstrap Controls
[Expand]ASP.NET Core Bootstrap Controls
[Collapse]WPF Controls
 [Expand]What's Installed
 [Expand]Common Concepts
 [Expand]MVVM Framework
 [Collapse]Controls and Libraries
  [Expand]Data Grid
  [Expand]Ribbon, Bars and Menu
  [Expand]Charts Suite
  [Expand]Pivot Grid
  [Expand]Rich Text Editor
  [Expand]Tree List
  [Expand]Gauge Controls
  [Expand]Map Control
  [Expand]Layout Management
  [Expand]Windows Modern UI
  [Collapse]Data Editors
    Included Components
   [Collapse]Implementation Details
     Attached Properties
    [Collapse]Editors Structure
      Editors Hierarchy
      Editors Class Structure
     Custom Editors
   [Expand]Getting Started
   [Expand]Editor Types
   [Expand]Common Features
   [Expand]Range Control
   [Expand]Visual Elements
   [Expand]End-User Capabilities
  [Expand]Navigation Controls
  [Expand]Spell Checker
  [Expand]Property Grid
  [Expand]PDF Viewer
  [Expand]TreeMap Control
  [Expand]Gantt Control
  [Expand]Diagram Control
  [Expand]Windows and Utility Controls
   Dialogs, Notifications and Panels
  [Expand]Scheduler (legacy)
 [Expand]Scaffolding Wizard
  Redistribution and Deployment
  Get More Help
 [Expand]API Reference
[Expand]Xamarin Controls
[Expand]Windows 10 App Controls
[Expand]Office File API
[Expand]Report and Dashboard Server
[Expand]eXpressApp Framework
[Expand]eXpress Persistent Objects
[Expand]CodeRush Classic
[Expand]Cross-Platform Core Libraries
[Expand]Tools and Utilities
 End-User Documentation
View this topic on docs.devexpress.com (Learn more)

Editors Class Structure

This topic discusses how editors are organized internally. It describes the classes used and explains how data editors can be used for in-place editing in container controls (e.g. Data Grid).

Expanded Editors Class Structure

All data editor classes derive from the BaseEdit class. These classes represent stand-alone controls that you can place onto a window. These are also the controls that are created by containers when an editor is activated (e.g. when editing a cell value with a grid). The BaseEdit class only implements the basic internal class structure required by container controls to work with their in-place editors, and does not provide any editor functionality.

When you create an in-place editor, you actually create an object that holds an editor's settings. Each editor has the helper class (the BaseEditSettings descendant) responsible for the editor's functionality. This class stores editor behavior options required by a container control to create a fully functional data editor at runtime. When the same editor is used in multiple locations, a container control uses this helper class to paint its cells. Edit settings can be accessed and customized via a container's EditSettings property.

Let's consider an editor used to edit column values in a grid. In this instance, the new BaseEditSettings descendant is created and assigned to a column's ColumnBase.EditSettings property.

The actual editors (BaseEdit descendants) are only created when end-users start to edit data, and are automatically destroyed when data editing is completed.

The image below illustrates an editor's internal structure.

When creating custom editor controls, you need to follow this editor structure, so that container controls can manage your editor properly.

Is this topic helpful?​​​​​​​