[Expand]General Information
[Expand]WinForms Controls
[Expand]ASP.NET Controls and MVC Extensions
[Expand]ASP.NET Bootstrap Controls
[Expand]ASP.NET Core Bootstrap Controls
[Expand]WPF Controls
[Expand]Xamarin Controls
[Expand]Windows 10 App Controls
[Expand]Office File API
[Expand]Report and Dashboard Server
[Collapse]eXpressApp Framework
 [Expand]Getting Started
  [Expand]Application Solution Components
  [Expand]Business Model Design
  [Collapse]Application Model
   [Expand]Model Editor
    Application Model Basics
    Business Model in the Application Model
    Application Model Structure
    Access the Application Model in Code
    Extend and Customize the Application Model in Code
    Built-in Nodes Generators
    Convert Application Model Differences
    Model Difference Storages
  [Expand]UI Construction
  [Expand]Controllers and Actions
  [Expand]Data Manipulation and Business Logic
  [Expand]Security System
  [Expand]System Module
  [Expand]Extra Modules
  [Expand]Debugging, Testing and Error Handling
  [Expand]Application Life Cycle
 [Expand]Design-Time Features
 [Expand]Task-Based Help
  Frequently Asked Questions (FAQ)
 [Expand]API Reference
[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)

Application Model Structure

The Application Model consists of nodes and their properties. Nodes can have child nodes; and they form the tree structure of the Application Model. This topic explains how the Application Model structure for a particular application is formed.

The Application Model's tree nodes are defined via interfaces. These interfaces are derived from the base IModelNode interface. Its members manage access to the parent and child nodes, as well as to the current node's properties.

The Application Model's root node (the Application node) is defined by the IModelApplication interface. This interface defines the node's properties (the Title, Company, Description an so on) and child nodes (the ActionDesign, Views and others). Each child node is represented by an interface that defines its properties and child nodes. So the root node, together with its child nodes, forms the Application Model's basic structure.

The basic structure is customizable. There are so-called extenders. They add properties and/or child nodes to a certain Application Model node. These extenders are also defined by the interfaces derived from the IModelNode interface. To add them to the Application Model's final structure, the predefined members exposed by the ModuleBase class and a Controller's IModelExtender interface are used. For instance, the FilterController extends the ListView node with the Filters node by adding the IModelListViewFilters extender to the IModelListView node. When implementing a custom Module or a Controller, you can extend the Application Model if required. To learn how to do this, refer to the Extend and Customize the Application Model in Code help topic.

When an application is started, all interfaces that define and extend the Application Model are collected from code. Then, an object implementing all these interfaces is compiled. This object represents the actual Application Model. So, depending on the Modules and Controllers used in an application, the Application Model structure can vary.

The following sections list the common and extending Application Model interfaces shipped with XAF.

Expanded IModelAction

The Action node represents Action settings. Extenders:

Expanded IModelActionContainerViewItem

The ActionContainerViewItem node defines a View Item that displays an Action Container.

Expanded IModelActionDesign

The ActionDesign node provides access to Actions, Action Containers, Controllers and possible reasons for an Action disability. Extenders:

Expanded IModelApplication

Properties of the Application node provide general information on the current application. Extenders:

Expanded IModelChartSettings

The ChartSettings node provides access to the settings of the charting List Editor used by a List View. Extenders:

Expanded IModelClass

Expanded IModelColumn

The Column node defines a column that displays a particular property. Extenders:

Expanded IModelDetailView

The DetailView node defines a Detail View of a particular business class. Extenders:

Expanded IModelLayoutGroup

The LayoutGroup node defines the layout of View Items that belong to a particular group. Extenders:

Expanded IModelLayoutItem

The LayoutItem node defines the layout of a particular View Item in a Detail View. Extenders:

Expanded IModelListView

Expanded IModelRootNavigationItems

The NavigationItems node specifies the navigation structure used by the Navigation Action. Extenders:

Expanded IModelOptions

Expanded IModelPropertyEditor

The PropertyEditor node defines a Property Editor of a particular property. Extenders:

Expanded IModelTabbedGroup

The TabbedGroup node defines the layout of View Items within a tabbed group. Extenders:

Expanded IModelView

Serves as the base interface for the IModelListView, IModelDetailView and IModelDashboardView interfaces. Extenders:

Expanded See Also

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