我正在学习棱镜而且我遇到了问题。
我制作的应用程序非常类似于Mike Taulty制作的应用程序,对于Prism来说是非常有价值的。最大的区别是我的应用程序是WPF应用程序而不是Silverlight。
我发现我遇到了问题。当我关闭主shell窗口时,应用程序不会退出。窗口有问题,但调试器仍处于活动状态。
我曾尝试寻找调用堆栈等,但Visual Studio只是告诉我它是“外部代码”。
关于我可以做什么/寻找什么来解决这个问题的想法?
答案 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));
}