Prism WPF 登录 Window 关闭

Prism WPF Login Window Close

我正在使用 prism,我正在尝试在登录成功后关闭登录 window 并显示主要 window。我在下面找到了 link 以了解如何做到这一点,我对其进行了更改以使其与棱镜一起使用。

https://www.codeproject.com/Questions/581554/WPFplusLoginplusinplusMVVMplusIssue

当登录匹配时,视图模型会触发一个事件。

我的登录 window 实际上在登录成功后就关闭了,但是主 window 没有出现。

这是我的代码

App.xaml.cs

public partial class App : Application
{

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        var login = new Login();
        var loginVM = new LoginViewModel();

        loginVM.LoginCompleted += (sender, args) =>
        {
            var bootstrapper = new Bootstrapper();
            bootstrapper.Run();

            login.Close();
        };
        login.DataContext = loginVM;
        login.ShowDialog();
    }


}

Bootstrapper.cs

class Bootstrapper : AutofacBootstrapper
    {

    protected override DependencyObject CreateShell()
    {
        return Container.Resolve<MainWindow>();
    }
    protected override void InitializeShell()
    {
        Application.Current.MainWindow.Show();

    }
}

我试过同样的方法。它正在按照预期工作。

我做的是

App.xaml.cs

    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        var bootstrapper = new Bootstrapper();
        bootstrapper.Run();
    }

引导程序

    class Bootstrapper : AutofacBootstrapper
    {
         protected override DependencyObject CreateShell()
         {
             return Container.Resolve<MainWindow>();
         }

         public override void Run(bool runWithDefaultConfiguration)
         {
             base.Run(true);
             AutoMapperConfiguration.Configure();
         }

         protected override void InitializeShell()
         {
             var login = new Views.Login.LoginView();
             var loginVM = new LoginViewModel();

             loginVM.LoginCompleted += (sender, args) =>
             {
                   Application.Current.MainWindow.Show();
                   login.Close();
             };
             login.DataContext = loginVM;
             login.ShowDialog();
        }
   }