Skip to main content
All docs
V24.2

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

Change the Application Model

  • 2 minutes to read

#Use the Model Editor

The Application Model may set settings on multiple levels. You can examine and edit settings on any level that uses a XAFML file. This includes all layers but level zero (settings generated based on Business Model code).

To edit settings on any of those levels, use the Model Editor.

ModelEditorDesign

#Get or Set Model Settings in Code

You can access the Application Model in code and either read or modify the required values.

Important

Note that the UI does not immediately reflect changes made in the Application Model. If you need to apply changes after XAF creates and initializes a UI control, access the control directly. See How to: Access the Grid Component in a List View for more information. You can also recreate a control with the latest Application Model changes as described in the following article: Apply Application Model Changes to the Current View Immediately.

To access the Application Model in code, use the following objects:

Object Property
View View.Model
ActionBase ActionBase.Model
PropertyEditor PropertyEditor.Model
XafApplication XafApplication.Model

These properties return an IModelNode descendant that encapsulates the corresponding node. You can use the Application property to access the Application Model’s root node. Refer to the following topic for additional information: How the XAF Application Model Works.

The following code shows how to access the ‘Contact’ business class and modify its IModelClass.Caption:

using System.Linq;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;

namespace YourSolutionName.Module.Controllers {
    public class CustomController : ViewController {
        public CustomController() {
            var myAction1 = new SimpleAction(this, "MyAction1", null);
            myAction1.Execute += MyAction1_Execute;
        }

        private void MyAction1_Execute(object sender, 
         SimpleActionExecuteEventArgs e) {
            var lst = Application.Model.BOModel.ToList();
            var bo = Application.Model.BOModel.Where(x => x.Name == 
             "YourSolutionName.Module.BusinessObjects.Contact").FirstOrDefault();
            if(bo != null) {
                var oldCaption = bo.Caption;
                bo.Caption = "New test caption";
            }
        }
    }
}