c# - CM Bootstrap 在 Root View 之前显示一个窗口

标签 c# wpf caliburn.micro

我有一个 Caliburn.Micro Bootstrap ,我在其中使用 OnStartup()检查 View 事物并调用 DisplayRootViewFor<IShell>之后。在某些情况下,我必须让用户做出重要决定或在 Root View 启动之前显示一些警告。我可以使用 WindowManager.ShowDialog() 来做到这一点.

但这就是问题所在:当我在 Root View 之前没有显示任何窗口时,一切都按预期进行。

当我在 Root View 之前显示一个窗口时 DisplayRootViewFor()已调用但应用程序立即终止。

我想这是因为当我使用窗口管理器在窗口获取 Root View 之前显示窗口并关闭它时,WPF 应用程序认为其主窗口已关闭并自动终止。

那么如何在 Root View 之前显示一个(模态)窗口?


我发现一个可能的解决方案是:

设置Application.ShutdownModeOnExplicitShutdown .然后我必须跟踪何时真正关闭应用程序,例如当外壳关闭时我必须调用 System.Windows.Application.Current.Shutdown();明确地。

我很好奇是否还有另一种方法,但我想当模式窗口关闭时,WPF 应用程序中的窗口数量会暂时下降到 0,无论是否很快建立新的主窗口,都会触发关闭之后。

最佳答案

你可以把你的 shutdown 放在你的 shell view on close 上,因为 shell view 是主窗口,如果用户关闭它意味着他们想要关闭 exe。

private void ShellView_OnClosed(object sender, EventArgs e)
    {
        Application.Current.Shutdown();
    }

关于c# - CM Bootstrap 在 Root View 之前显示一个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343353/

相关文章:

c# - 如何在 C# 中使用 Caliburn.Micro 从 ListView 获取选定的项目和事件?

c# - 适合 Unity 的抽象工厂

c# - 从MVVM中的代码设置WPF延迟

c# - 序列化“System.Data.Entity.DynamicProxies”类型的对象时检测到循环引用

c# - 什么时候在 mvvm 中使用 Dispatcher?

.net - ImageBrush 可以多线程工作吗?

wpf - 在两个相同的应用程序之间进行锣拖放

wpf - Caliburn.Micro : How to bind a specific Item of Conductor. Collection.AllActive 到 ContentControl

c# - 将类转换为字符串以通过电子邮件发送

c# - 如何在 WinRT 8.1 上 P/调用 kernel32.dll