Окно входа Prism WPF Закрыть - PullRequest
0 голосов
/ 08 июня 2018

Я использую призму и пытаюсь закрыть окно входа в систему после успешного входа в систему и показать главное окно.Я нашел ссылку ниже, чтобы понять, как я могу это сделать, и изменил ее, чтобы она работала с призмой.

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

Событие вызывается из модели представления, когдаЛогин совпадает.

Мое окно входа в систему фактически закрывается после успешного входа в систему, но главное окно не появляется.

Вот мой код

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();

    }
}

1 Ответ

0 голосов
/ 12 июня 2018

Я попробовал то же самое решение.Он работает в соответствии с ожиданиями.

То, что я сделал, это

App.xaml.cs

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

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

BootStrapper

    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();
        }
   }
...