I would make the login window a child of mainpage.
I usually have a single page app with mainpage hosting usercontrols instead of navigating to other controls.
Mainpage looks something like:
<Grid>
menu of some sort
<ContentControl Name="MainPanel"/>
To navigate, I set the content of MainPanel to the page the user is navigating to.
I use mvvm light messenger to message from viewmodel to MainPage code behind to drive that process.
A snippet from one of my mainpages:
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
Messenger.Default.Register<NavigatePage>(this, (action) => ReceiveNavigateMessage(action));
Messenger.Default.Register<CommandDone>(this, (action) => ReceiveCommandDoneMessage(action));
Messenger.Default.Register<Admin>(this, (action) => ReceiveAdminMessage(action));
}
private object ReceiveNavigateMessage(NavigatePage navigatePage)
{
this.MainPanel.Content = navigatePage.Page;
return null;
}