关闭时Prism App不会退出

时间:2010-11-06 20:11:26

标签: wpf prism

我正在学习棱镜而且我遇到了问题。

我制作的应用程序非常类似于Mike Taulty制作的应用程序,对于Prism来说是非常有价值的。最大的区别是我的应用程序是WPF应用程序而不是Silverlight。

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

我曾尝试寻找调用堆栈等,但Visual Studio只是告诉我它是“外部代码”。

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

2 个答案:

答案 0 :(得分:5)

覆盖App.xaml后面代码中的OnStartup方法,并添加:

this.ShutdownMode = ShutdownMode.OnMainWindowClose; 

HTH

答案 1 :(得分:3)

戴尔的答案只能解决部分问题。

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

问题在于Shell在Bootstrapper中创建。 当我修复它时,我有2个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));
}