当调用弹出窗口的`.ShowDialog()`时,WPF应用程序关闭

ahm*_*iee 2 c# wpf

首先,我想解释一下我将要做的事情:我正在开发一个学习应用程序,向学生展示一些卡片.我CardPack上课是一组卡片.

为了获得卡片包的许可,我想从用户那里获得一个ID,然后我创建了一个窗口来获取用户的RegisterKey.这是我的GetRegisterKey("CardPackName")方法:

    public static string GetRegisterKey(string name)
    {
        GetRegisterKey grk = new GetRegisterKey(name);
        grk.ShowDialog();
        return grk.Key;
    }
Run Code Online (Sandbox Code Playgroud)

grk.ShowDialog();运行后程序将退出,我不知道为什么!有人可以帮我解决这个问题吗?!?


更新

我试图GetRegisterKeyWindows_loaded事件中创建一个新实例,MainWindows并且我调用grk.ShowDialog()它并且它工作正常并且程序没有关闭.我不知道问题的根源是什么!

但我发现问题不是GetRegisterKey从那时起我会从问题中删除它的代码.

UPDATE2

我把一个断点放在return grk.Key;一行检查它是否运行但它没有运行并且程序关闭了!

Ert*_*maa 7

请参阅Application.ShutDownMode,

http://msdn.microsoft.com/en-us/library/system.windows.application.shutdownmode.aspx

只有在调用Application的Shutdown方法时,应用程序才会停止运行.关闭可以隐式或显式发生,由ShutdownMode属性的值指定.

如果将ShutdownMode设置为OnLastWindowClose,则Windows Presentation Foundation(WPF)会在应用程序中的最后一个窗口关闭时隐式调用Shutdown,即使当前实例化的任何窗口都设置为主窗口(请参阅MainWindow).

OnMainWindowClose的ShutdownMode导致Windows Presentation Foundation(WPF)在MainWindow关闭时隐式调用Shutdown,即使其他窗口当前处于打开状态.

某些应用程序的生命周期可能不依赖于主窗口或最后一个窗口何时关闭,或者根本不依赖于窗口.对于这些场景,您需要将ShutdownMode属性设置为OnExplicitShutdown,这需要显式的Shutdown方法调用来停止应用程序.否则,应用程序将继续在后台运行.

ShutdownMode可以从XAML以声明方式配置,也可以从代码以编程方式配置.

此属性仅可从创建Application对象的线程中使用.