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.
The Action node represents Action settings. Extenders:
The ActionContainerViewItem node defines a View Item that displays an Action Container.
Properties of the Application node provide general information on the current application. Extenders:
The Class node defines a persistent class from the business model, and provides access to its members list. Extenders:
The Column node defines a column that displays a particular property. Extenders:
The DetailView node defines a Detail View of a particular business class. Extenders:
The LayoutGroup node defines the layout of View Items that belong to a particular group. Extenders:
The LayoutItem node defines the layout of a particular View Item in a Detail View. Extenders:
The ListView node defines a List View of a particular business class. Extenders:
The NavigationItems node specifies the navigation structure used by the Navigation Action. Extenders:
The Options node allows editing different UI settings. Extenders:
The PropertyEditor node defines a Property Editor of a particular property. Extenders:
The TabbedGroup node defines the layout of View Items within a tabbed group. Extenders: