Prism 应用程序关闭时不退出

发布于 2024-10-01 11:23:13 字数 274 浏览 3 评论 0原文

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

我制作了一款应用程序,与 Mike Taulty 在关于 Prism 的精彩教程中制作的应用程序非常相似。最大的区别是我的应用程序是 WPF 应用程序而不是 Silverlight。

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

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

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

I am learning prism and I have hit a problem.

I have made an app very similar to the one that Mike Taulty makes in is great tutoral about Prism. The biggest difference is that my app is a WPF app instead of Silverlight.

I am finding that I have hit a problem though. When I close the main shell window, the app does not exit. The window goes a way, but the debugger is still active.

I have tried looking for call stacks and such, but Visual Studio just tells me that it is "External Code".

Any ideas on what I can do/look for to fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风筝有风,海豚有海 2024-10-08 11:23:13

重写 App.xaml 后面代码中的 OnStartup 方法,并添加以下内容:

this.ShutdownMode = ShutdownMode.OnMainWindowClose; 

HTH

Override the OnStartup method in the code behind of your App.xaml, and add this:

this.ShutdownMode = ShutdownMode.OnMainWindowClose; 

HTH

金橙橙 2024-10-08 11:23:13

戴尔的回答只解决了部分问题。

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

问题出在 Bootstrapper 中创建的 Shell 上。
当我解决这个问题时,我得到了 2 个 Shell 窗口实例。
为什么?

真正的问题是 app.xaml 中的启动 Uri
您不能同时拥有启动 Uri 和 Bootstrapper 中的 Shell 创建。

从 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));
}

The answer of Dyer solve only part of the problem.

I had the same issue, and after a while I found out that region navigation commands are not working well either.

The problem was with the Shell creating in Bootstrapper.
When I fixed that, I got 2 Shell windows instances.
Why?

The real problem was the startup Uri in the app.xaml.
You can't have both startup Uri with Shell creation in Bootstrapper.

Remove it from the app.xaml, fix your Shell and no need is this "Patch" and your app will behave as it should, it will close when you close the Shell.

Again, this is only a symptom, other issues will rise if you don't fix the Shell creation.

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));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文