The way I do it is to keep the root visual the same but change the content within it.
So in your App.cs file you do this
//Setup a root content user control so we can swap out the content depending on what we want to show
UserControl RootContent = new UserControl();
RootContent.HorizontalAlignment = HorizontalAlignment.Stretch;
RootContent.VerticalAlignment = VerticalAlignment.Stretch;
DispatcherHelper.Initialize();
this.RootVisual = RootContent;
(this.RootVisual as UserControl).Content = new SplashScreenView();
And then when you want to switch to a different view you can just do this
(App.Current.RootVisual as UserControl).Content = new Views.PreQualView();