Why don't you handle this issue with two seperate modules,One ,called MainModule, has public shell and another, called AuthenticateModule, has loginView.In order to show LoginView on the shellView, you should consider the order of loading modules and the mode of loginView. Finally I want to say you can do this with both Mef or Unity.
in your bootstraper:
protected override void InitializeShell()
{
base.InitializeShell();
Application.Current.MainWindow.Show();}
and you should load your AuthenticateModule too:
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
Type authenticationModuleType = typeof(AuthenticationModule.AuthenticationModule);
ModuleCatalog.AddModule(new ModuleInfo(authenticationModuleType.Name, authenticationModuleType.AssemblyQualifiedName));
and in your AuthenticationModule:
public class AuthenticationModule : IModule
{
...
public void Initialize()
{
LoginView _loginView = _container.Resolve<LoginView>();
if (_loginView != null)
{
_loginView.Owner = Application.Current.MainWindow;
_loginView.Show();
}
}