Приложение Prism не закрывается при закрытии - PullRequest
4 голосов
/ 06 ноября 2010

Я изучаю призму и столкнулся с проблемой.

Я сделал приложение, очень похожее на то, в котором делает Майк Таути, отличное учение о Призме. Самое большое отличие состоит в том, что мое приложение представляет собой приложение WPF вместо Silverlight.

Я обнаружил, что столкнулся с проблемой. Когда я закрываю главное окно оболочки, приложение не закрывается. Окно идет своим чередом, но отладчик все еще активен.

Я пытался искать стеки вызовов и тому подобное, но Visual Studio просто говорит мне, что это «Внешний код».

Любые идеи о том, что я могу сделать / искать, чтобы это исправить?

Ответы [ 2 ]

6 голосов
/ 07 ноября 2010

Переопределите метод OnStartup в коде вашего App.xaml и добавьте следующее:

this.ShutdownMode = ShutdownMode.OnMainWindowClose; 

НТН

3 голосов
/ 16 августа 2012

Ответ Дайера решит только часть проблемы.

У меня была такая же проблема, и через некоторое время я обнаружил, что команды навигации по региону тоже не работают.

Проблема была в том, что в Bootstrapper создавалась оболочка.Когда я это исправил, я получил 2 экземпляра Windows Shell.Почему?

Настоящей проблемой был Uri запуска в app.xaml.У вас не может быть обоих Uri запуска с созданием оболочки в Bootstrapper.

Удалите его из app.xaml, исправьте вашу оболочку, и вам не понадобится этот «патч», и ваше приложение будет вести себя как должно, онозакройте, когда вы закроете оболочку.

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

protected override DependencyObject CreateShell()
{
    return this.Container.Resolve<Shell>();
}

protected override void InitializeShell()
{
    base.InitializeShell();

    Application.Current.MainWindow = (Shell)this.Shell;
    Application.Current.MainWindow.Show();

    IRegionManager regionManager = this.Container.Resolve<IRegionManager>();
    regionManager.RegisterViewWithRegion(RegionNames.MainRegion, typeof(MainView));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...