Dsoft.WizardControl.WPF is a simple user control for WPF
It supports
- Databiding
- Multiple pages
- Validation
- Themeing
The WPF Wizard control is a UserControl
based element and so it be used in other UserControl
objects or directly in a Window
Install the Nuget package into you project via the Package Management Console
Install-Package Dsoft.WizardControl.WPF
Or install it via the Visual Studio Nuget Manager
In your Window
or UserControl
add a new namespace
xmlns:wizard="clr-namespace:Dsoft.WizardControl.WPF;assembly=Dsoft.WizardControl.WPF"
Then you can add the WizardControl
to the xaml
<Grid>
<wizard:WizardControl
Title="{Binding Title}"
Pages="{Binding Pages}"
CancelCommand="{Binding CancelCommand}"
FinishCommand="{Binding FinishCommand}"/>
</Grid
The WizardControl
uses UserControl
that implements the IWizardPage
interface.
The Pages
property of the WizardControl
is expecting a ObservableCollection<IWizardPage>
object which can be databound to a viewmodel or provided explicitly.
The Title
, CancelCommand
and FinishCommand
can also be databound or provided explicitly.
Below is an example ViewModel using System.Mvvm
public class MainWindowViewModel : ViewModel
{
public string Title
{
get { return _title; }
set { _title = value; NotifyPropertyChanged("Title"); }
}
public ObservableCollection<IWizardPage> Pages
{
get { return _pages; }
set { _pages = value; NotifyPropertyChanged("Pages"); }
}
public ICommand CancelCommand
{
get
{
return new DelegateCommand(() =>
{
MessageBox.Show("Bye!");
OnRequestCloseWindow?.Invoke(this, false);
});
}
}
public ICommand FinishCommand
{
get
{
return new DelegateCommand(() =>
{
MessageBox.Show("Fin!");
OnRequestCloseWindow?.Invoke(this, false);
});
}
}
}
The appearance of the WizardControl
header can be modified by overriding the theme
You can also change the ButtonStyle
in the same way
Example styling xaml that can be added to the App.xaml or other xaml resource file
xmlns:wizcont="clr-namespace:Dsoft.WizardControl.WPF;assembly=Dsoft.WizardControl.WPF"
<Style TargetType="{x:Type wizcont:WizardControl}">
<Setter Property="ButtonStyle" Value="{StaticResource AccentedSquareButtonStyle}" />
</Style>
<Style TargetType="{x:Type wizcont:WizardCont}">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel VerticalAlignment="Center" Orientation="Vertical" Margin="5">
<TextBlock Text="{Binding Title,FallbackValue=Heading}" FontSize="36" Foreground="{StaticResource AccentColorBrush}"/>
<TextBlock Text="{Binding SubTitle,FallbackValue=SubHeading}" FontSize="12" Foreground="Gray"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>