xtrareports-119928-desktop-reporting-wpf-reporting-end-user-report-designer-for-wpf-api-and-customization-register-a-custom-page-in-the-report-wizard.md
This document describes how to extend the End-User Report Designer‘s Report Wizard with a custom page that allows you to edit the report page settings. For instance, you can display this page after selecting the report type (for empty and data-bound reports).
Important
Customization options described in this help topic are available to owners of DevExpress WPF, DXperience, or Universal subscription (subscriptions that include DevExpress WPF UI Controls). The DevExpress Reporting Subscription does not support UI customization in Report Viewer or End-User Report Designer.
Refer to the following help topic for information on subscription options: Installation - Subscriptions that Include Reporting Components.
View Example: WPF Report Designer - How to register a custom page in the Report Wizard
Follow these steps to accomplish this task:
Create a custom page Presenter by inheriting it from the abstract WizardPageBase<TView, TModel> class (from the DevExpress.Data.WizardFramework namespace). Use the TView and TModel type parameters to associate the page Presenter with an appropriate View and Model (which are created later). In this presenter, implement logic that passes data between the Model and View, specify the next wizard page type, and define which page buttons should be available.
Declare an interface that identifies the wizard page View.
Create the page ViewModel by inheriting it from the WizardPageBase class (from the DevExpress.Xpf.DataAccess.DataSourceWizard namespace) and implementing the interface declared above. This ViewModel processes data that is displayed in the user interface.
Write a XAML template with the ViewModel type referenced by a Key to define the page’s visual appearance and layout. The specified Key is used to locate the corresponding template automatically.
Create an XtraReportModel class descendant, add custom fields that store the report page settings, and override the Equals method to take the added fields into account.
Override the existing ChooseReportTypePage Presenter to set your custom page as the next page.
Implement the IWizardCustomizationService interface, which provides four wizard customization methods. In this implementation, register the previously created Presenters, ViewModel and Model, and add the logic that builds the report.
Assign your custom IWizardCustomizationService implementation to the ReportDesignerBase.ServicesRegistry property as shown below.
See Also