Wpf Prism应用程序在关闭时不退出

Wpf Prism应用程序在关闭时不退出,wpf,prism,Wpf,Prism,我正在学习棱镜,我遇到了一个问题 我制作了一个与迈克·陶尔蒂在《棱镜的伟大导师》中制作的应用程序非常相似的应用程序。最大的区别是我的应用程序是WPF应用程序而不是Silverlight 但我发现我遇到了一个问题。当我关闭主shell窗口时,应用程序不会退出。窗口运行正常,但调试器仍处于活动状态 我尝试过寻找调用堆栈之类的东西,但VisualStudio只是告诉我这是外部代码 关于我可以做什么/寻找什么来解决这个问题,有什么想法吗?在App.xaml的代码背后覆盖OnStartup方法,并添加以下

我正在学习棱镜,我遇到了一个问题

我制作了一个与迈克·陶尔蒂在《棱镜的伟大导师》中制作的应用程序非常相似的应用程序。最大的区别是我的应用程序是WPF应用程序而不是Silverlight

但我发现我遇到了一个问题。当我关闭主shell窗口时,应用程序不会退出。窗口运行正常,但调试器仍处于活动状态

我尝试过寻找调用堆栈之类的东西,但VisualStudio只是告诉我这是外部代码


关于我可以做什么/寻找什么来解决这个问题,有什么想法吗?

在App.xaml的代码背后覆盖OnStartup方法,并添加以下内容:

this.ShutdownMode = ShutdownMode.OnMainWindowClose; 

戴尔的答案只解决了问题的一部分

我也有同样的问题,过了一段时间我发现区域导航命令也不能正常工作

问题在于在引导程序中创建Shell。 当我修复它时,我得到了两个Shell窗口实例。 为什么?

真正的问题是app.xaml中的启动Uri。 在Bootstrapper中创建Shell时不能同时使用启动Uri

将其从app.xaml中删除,修复您的Shell,无需使用此修补程序,您的应用程序将正常运行,当您关闭Shell时,它将关闭

同样,这只是一个症状,如果不修复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));
}

你真棒!非常感谢你!