[Expand]General Information
[Expand]WinForms Controls
[Expand]ASP.NET Controls and MVC Extensions
[Expand]ASP.NET Bootstrap Controls
[Expand]ASP.NET Core Bootstrap Controls
[Expand]WPF Controls
[Expand]Xamarin Controls
[Expand]Windows 10 App Controls
[Expand]Office File API
 [Expand]Product Information
 [Expand]Get Started with DevExpress Reporting
 [Expand]Create Popular Reports
 [Expand]Detailed Guide to DevExpress Reporting
 [Expand]Visual Studio Report Designer
 [Collapse]Create End-User Reporting Applications
   Cross-Platform Reporting
  [Collapse]WinForms Reporting
   [Expand]Print API
   [Expand]Print Preview
   [Collapse]End-User Report Designer
    [Expand]Quick Start
    [Collapse]API and Customization
      Quick Guide to Report Designer Customization
      Add Items to the Report Designer's Standard Toolbar
      Add Items to the Report Designer's Ribbon Toolbar
      Execute Commands in the End-User Report Designer
      Override Commands in the End-User Report Designer (Implement Custom Saving)
      Hide Commands from the End-User Report Designer
      Change the Dock Panel View in the End-User Report Designer
      Customize Dock Panels in the End-User Report Designer
      Remove Dock Panels from the End-User Report Designer
      Set the Input Focus of Dock Panels in the End-User Report Designer
      Refresh the Field List in the End-User Report Designer
      Provide Custom Icons to the Field List Items
      Provide Custom Names to the Field List Items
      Hide Properties from the End-User Report Designer
      Use Favorite Properties in the End-User Report Designer
      Customize the Property Grid in the End-User Report Designer
      Register Custom Report Parameter Types
      Implement a Custom Report Gallery Storage
      Add Controls to the End-User Report Designer's Toolbox
      Make a Custom Control Available Only for a Specific Report
      Rename Toolbox Items in the End-User Report Designer
      Invoke the Report Wizard
      Wizard Customization Overview
      Report Wizard Pages
      Data Source Wizard Pages
      Customize the Report Wizard's Pages
      Remove Data Providers from the Report Wizard
      Remove Data Source Types from the Report Wizard
      Invoke and Customize the Query Builder
   [Expand]Application Security
   [Expand]Application Appearance
    Application Deployment
    End-User Documentation
  [Expand]WPF Reporting
  [Expand]Web Reporting
  [Expand]WCF Report Service
  [Expand]Discontinued Platforms
   Redistribution and Deployment
 [Expand]API Reference
[Expand]Report and Dashboard Server
[Expand]eXpressApp Framework
[Expand]eXpress Persistent Objects
[Expand]CodeRush Classic
[Expand]Cross-Platform Core Libraries
[Expand]Tools and Utilities
 End-User Documentation
View this topic on docs.devexpress.com (Learn more)

Wizard Customization Overview

This document describes the structural elements of a Report Wizard that is used to create new reports and bind existing reports to data in the End-User Report Designer for WinForms.


To learn how to customize the Report Wizard of the End-User Report Designer for WPF, see Wizard Customization Overview.

Expanded Wizard Structural Elements

The Data Source Wizard is used to bind an existing report to a data source. The Report wizard re-uses all Data Source wizard pages and adds extra pages to configure the report layout, as well as pages to create a label and inherited reports.

You can specify a custom list of labels available in the Label Report wizard. To do this, assign a path to an XML file containing custom label definitions to the static LabelWizardCustomization.ExternalLabelProductRepository property.

The Report wizard architecture is based on the MVP (Model-View-Presenter) design pattern. Every wizard page is defined by a presenter and view.

  • Model

    Settings defined on the Report Wizard pages are stored by the ReportModel class.

    These settings are translated to the XtraReportModel class that also stores data-related settings defined on the Data Source Wizard pages.

    To save any additional data to a model object from custom wizard pages, use the XtraReportModel.Tag property.

    When adding custom fields to this model, make sure that they implement the Equals method.

  • Views define the Graphical User Interface of wizard pages. Each page view is an XtraUserControl descendant populated with data editors allowing an end-user to specify particular settings. Each page view should descend from the WizardViewBase class that implements the IWizardPageView interface.
  • Presenters define the logic behind a specific wizard page. Each presenter defines how a page is initialized, how the user-specified data is processed in the context of the current page as well as how settings specified by an end-user are submitted to the report model.

    Each page presenter should descend from the abstract WizardPageBase<TView, TModel> class that implements the IWizardPage<TWizardModel> (see IWizardPage`1) interface. The TView type parameter of this class allows you to associate a page presenter with an appropriate view.

The following documents list the default page views and presenters used in the Data Source and Report wizards.

Expanded Wizard Customization API

To define wizard customization logic for the Report and Data Source wizards of a WinForms End-User Report Designer, implement the IWizardCustomizationService interface. This interface contains the following four methods, which you need to implement.

Both the CustomizeDataSourceWizard and CustomizeReportWizard methods receive an object implementing the IWizardCustomization<TModel> (see IWizardCustomization`1) interface. This interface exposes methods covering different aspects of wizard customization. For example, it allows you to register custom wizard pages and obtain various wizard resources from an internal container.

To apply your wizard customization logic to the End-User Report Designer for WinForms, pass an instance of your IWizardCustomizationService implementation to the report designer's XRDesignMdiController.AddService method.

Expanded Code Examples

Is this topic helpful?​​​​​​​