2010-11-06 3 views
4

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

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

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

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

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

ответ

5

Переопределение OnStartup метод в коде позади вашего App.xaml, и добавить:

this.ShutdownMode = ShutdownMode.OnMainWindowClose; 

HTH

+0

Вы потрясающий! Спасибо огромное! – Vaccano

3

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

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

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

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

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

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

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)); 
} 
Смежные вопросы