Skip to main content
.NET 8.0+

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

XafApplication.DetailViewCreating Event

Occurs when creating a Detail View.

Namespace: DevExpress.ExpressApp

Assembly: DevExpress.ExpressApp.v24.2.dll

NuGet Package: DevExpress.ExpressApp

#Declaration

public event EventHandler<DetailViewCreatingEventArgs> DetailViewCreating

#Event Data

The DetailViewCreating event's data class is DetailViewCreatingEventArgs. The following properties provide information specific to this event:

Property Description
EnableDelayedObjectLoading For internal use. Use the DetailView.UseAsyncLoading field instead of this property.
IsRoot Indicates whether a root View must be created. Inherited from ViewCreatingEventArgs.
Obj Returns the object that represents a current object for the Detail View to be the created.
ObjectSpace Returns the Object Space to be used when creating a new View. Inherited from ViewCreatingEventArgs.
View Specifies the Detail View which is created in the XafApplication.DetailViewCreating event.
ViewID Returns the ID of the created View. Inherited from ViewCreatingEventArgs.

#Remarks

Handle this event to provide a custom Detail View instead of a default one. Use the handler’s ViewCreatingEventArgs.ViewID parameter to get information on the created Detail View. To do this use the application’s XafApplication.FindModelView method passing the View ID as a parameter. To specify the Detail View’s current object use the handler’s DetailViewCreatingEventArgs.Obj parameter. Create the Detail View in the Object Space passed as the handler’s ViewCreatingEventArgs.ObjectSpace parameter.

The following example demonstrates how to handle the DetailViewCreating event to select a DetailView model based on properties of a displayed object:

using DevExpress.ExpressApp;
// using MainDemo.Module.BusinessObjects;

public class EmployeeDetailViewModelController : WindowController {
    public EmployeeDetailViewModelController() {
        TargetWindowType = WindowType.Main;
    }
    protected override void OnActivated() {
        base.OnActivated();
        Application.DetailViewCreating += Application_DetailViewCreating;
    }
    private void Application_DetailViewCreating(object sender, DetailViewCreatingEventArgs e) {
        if (e.ViewID == "Employee_DetailView" && e.Obj is Employee employee && employee.Position?.Title == "Manager") {
            e.ViewID = "Employee_DetailView_Manager";
        }
    }
    protected override void OnDeactivated() {
        base.OnDeactivated();
        Application.DetailViewCreating -= Application_DetailViewCreating;
    }
}

Note

If DetailView.UseAsyncLoading is set to true, note the following:

  • when you open a Detail View from the Navigation, the DetailViewCreatingEventArgs.Obj argument of the DetailViewCreating event is set to null;
  • when you open a Detail View from a List View (by double-clicking a record or using the OpenObject Action), the DetailViewCreatingEventArgs.Obj argument of the DetailViewCreating event is set to the object from the List View’s Object Space.
See Also