Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

Extend Functionality

  • 2 minutes to read

In this tutorial section, you will learn how to add custom features to your application. For this purpose, you should familiarize yourself with the following basic concepts of the eXpressApp Framework.

  • Action

    Visually, Action is a toolbar item or another control that performs the associated code when an end-user manipulates it. XAF provides several predefined Action types. You can choose the appropriate type, depending on how you want your Action to be represented within the UI. Regardless of the chosen type, all Actions expose the Execute event, whose handler is executed when end-users manipulate the corresponding element. For more details, refer to the Actions topic.

  • Controller

    Controllers are classes inherited from the Controller‘s descendants: ViewController (including its generic versions: ViewController<ViewType> and ObjectViewController<ViewType, ObjectType>) or WindowController. They are used to implement business logic in your application. This logic can be executed either automatically (e.g, when a View is activated) or triggered when an Action declared within the Controller is executed by a user. Controllers implemented within modules are collected automatically by XAF using reflection. That is why Controller classes should be public. When a Window is created, required Controllers are activated. This results in activating (making visible) their Actions. For more details, refer to the Controllers topic.

Controllers and Actions are instruments that provide custom features in an XAF application. In this tutorial section, you will learn how to add Actions of different types, implement Controllers without Actions, and modify the behavior of existing Controllers and Actions, etc. It is recommended that you complete the lessons listed below, in order.