InstallWizard / WizardStep

April 9, 2026 · View on GitHub

A multi-step installation wizard with a sidebar step list, progress bar, and Back / Next / Cancel navigation. Can be embedded inline, shown as a ContentDialog modal, or hosted in a standalone PleasantWindow.

Basic usage

<InstallWizard AppName="My App Setup" x:Name="Wizard"
               Finished="OnFinished" Cancelled="OnCancelled">
    <InstallWizard.Steps>
        <WizardStep Header="Welcome"
                    Description="Welcome to the setup wizard.">
            <WizardStep.Content>
                <TextBlock Text="Click Next to begin installation." Margin="20" />
            </WizardStep.Content>
        </WizardStep>

        <WizardStep Header="License">
            <WizardStep.Content>
                <ScrollViewer>
                    <TextBlock Text="{Binding LicenseText}" Margin="20" />
                </ScrollViewer>
            </WizardStep.Content>
        </WizardStep>

        <WizardStep Header="Install">
            <WizardStep.Content>
                <views:InstallProgressView />
            </WizardStep.Content>
        </WizardStep>
    </InstallWizard.Steps>
</InstallWizard>

InstallWizard properties

PropertyTypeDefaultDescription
StepsIList<WizardStep>Ordered list of wizard steps
CurrentStepIndexint0Zero-based index of the currently visible step
AppNamestring?Application name shown in the sidebar header
AppIconobject?Icon shown in the sidebar header (PathIcon, Image, etc.)
FooterTextstring?Copyright / footer text at the bottom of the sidebar
NextButtonTextstring"Next"Label for the Next/Finish button
BackButtonTextstring"Back"Label for the Back button
CancelButtonTextstring"Cancel"Label for the Cancel button
ShowCancelButtonbooltrueWhether the Cancel button is visible
ProgressdoubleProgress value 0–100 based on current step (read-only)
CurrentStepWizardStep?The currently active step (read-only)

InstallWizard events

EventDescription
FinishedRaised when the user clicks Next on the last step
CancelledRaised when the user clicks Cancel
StepChangedRaised whenever the active step changes — args include StepIndex and Step

WizardStep properties

PropertyTypeDefaultDescription
Headerstring?Step title shown in the sidebar and content header
Descriptionstring?Optional subtitle shown below the header in the content area
Contentobject?Body content for this step
ContentTemplateIDataTemplate?Data template for Content (preferred over setting a Control directly)
IsCompletedboolfalseWhether this step has been completed
CompletionStateWizardStepCompletionStateSuccessVisual state of the completion indicator
IsActiveboolWhether this is the currently visible step (set automatically)
StepNumberint1-based display number in the sidebar (set automatically)

WizardStepCompletionState values

ValueDescription
SuccessGreen checkmark
WarningYellow/orange warning icon
ErrorRed error icon

Show as modal dialog

bool finished = await InstallWizard.ShowAsModalAsync(wizard, this);
if (finished)
    CompleteInstallation();

Show as standalone window

bool finished = await InstallWizard.ShowAsWindowAsync(wizard, owner: this, width: 760, height: 500);

Programmatic navigation

wizard.GoNext();   // advance to next step (raises Finished on last step)
wizard.GoBack();   // go to previous step
wizard.CurrentStepIndex = 2; // jump directly to a step

Marking a step complete with a state

wizard.CurrentStep!.IsCompleted    = true;
wizard.CurrentStep!.CompletionState = WizardStepCompletionState.Warning;
wizard.GoNext();