无法重复显示对话框

Unable to ShowDialog repeatedly

在我的 App class 的构造函数中,我重复显示 window 作为对话框,而它 returns 是:

public App()
{       
    for (;;)
    {
        ...
        var factory = new ControlsFactory<int>();
        var window = factory.CreateWindow(model);
        var result = window.ShowDialog();
        if (!(result ?? false)) return;                
    }
}

它在第一次迭代时显示成功并且 returns 正确(我有一个带有点击处理程序的按钮,我在其中设置 DialogResult = true;),但下次它只是 returns false 立即循环中断。有什么方法可以将 window 显示为相应且无限的对话吗?

您可能需要将 Application.Current.ShutdownMode 设置为 ShutdownMode.OnExplicitShutdown

MSDN:

ShutdownMode.OnExplicitShutdown

An application shuts down only when Shutdown is called.

这是因为,显示模态对话框(当它是唯一 window 存在时)默认情况下会导致发布应用程序 退出消息,从而导致任何未来 windows 到 立即关闭 ,然后再以视觉方式显示。