I could make each screen a page (not too keen on this due to stack issues)
Non-linear navigation The service can help you with the back button.
I could use one page with a tab control
I made one magic application in WPF using Restyled Tab control. It was a bit dirty, works well.
You need to first design it and consider several scenarios. What happens when a user clicks the back button, starts a button, or does someone call the user? (when the application is under the tombstone, and the user presses the back button, the OS returns the last page). Is navigation very complex (decision tree)?
Make only one page with a grid with three grids / stack inside. Place them horizontally with margins 0; 480; 960. Only one internal grid can be displayed at this time. You can see an example here (I made jokes for friends: P).
I used stack panels with compound transform.
<StackPanel Name="questionPanel" Grid.Row="0" HorizontalAlignment="Center"> <StackPanel.RenderTransform> <CompositeTransform TranslateX="480"></CompositeTransform> </StackPanel.RenderTransform>
with animation
<UserControl.Resources> <Storyboard x:Name="centerPanelIn"> <DoubleAnimation Duration="0:0:0.3" BeginTime="0:0:0.6" To="0" Storyboard.TargetName="centerPanel" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)"> <DoubleAnimation.EasingFunction> <ExponentialEase Exponent="6.0" EasingMode="EaseOut"></ExponentialEase> </DoubleAnimation.EasingFunction> </DoubleAnimation> </Storyboard>
When the user clicks the button, the Completed event is added.
private void Button_Click(object sender, RoutedEventArgs e) { centerPanelOut.Begin(); centerPanelOut.Completed += new EventHandler(centerPanelOut_Completed); }
This approach has an advantage, because everything is on one page, and the animation gives a good UX. For a more complex wizard, consider creating your own UserControl.