ViewController.TargetObjectType Property
Specifies a ViewController‘s target object type. The View Controller is activated only for Views that represent this type.
Namespace: DevExpress.ExpressApp
Assembly: DevExpress.ExpressApp.v24.1.dll
NuGet Package: DevExpress.ExpressApp
Declaration
Property Value
Type | Default | Description |
---|---|---|
Type | null | An object’s type. |
Remarks
View Controllers are activated for both Windows and Frames. However, you can specify the type of objects represented by a View to provide a View Controller activation. For this purpose, specify the TargetObjectType property in code or the Designer.
To make a single View Controller available in Views of different business object types simultaneously, set the TargetObjectType property in code to an interface or their base class type, which is implemented or inherited by all these business types respectively. Also, for the same task, you can specify several View identifiers using the ViewController.TargetViewId property.
Note
The TargetObjectType property affects only ViewController’s activation. Controller.FrameAssigned and other events that are irrelevant to the object type always fire.
The following example creates a List View and displays it via a PopupWindowShowAction.
using System;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.BaseImpl;
// ...
public class ShowListViewController : ViewController {
public ShowListViewController() {
PopupWindowShowAction showListViewAction = new PopupWindowShowAction(this, "ShowListView",
PredefinedCategory.Edit);
this.TargetObjectType = typeof(Note);
showListViewAction.CustomizePopupWindowParams += ShowListViewAction_CustomizePopupWindowParams;
}
private void ShowListViewAction_CustomizePopupWindowParams(object sender, CustomizePopupWindowParamsEventArgs e) {
Type objectType = typeof(Person);
e.View = Application.CreateListView(objectType, true);
}
}
Alternatively, you can implement the generic ObjectViewController<ViewType, ObjectType> Controller instead of the ViewController and specify the View and object type for which this Controller should be activated in the ViewType and ObjectType generic parameters.