如何关闭窗口但仍使应用程序处于活动状态?

Lua*_*uat 0 c# wpf

假设我有 2 个窗口:InputWindow 和 DisplayWindow

当前:我想使用 InputWindow 通过 App 变量保存数据

// in InputWindow
(App.Current as App).u_id = obj.id;
Run Code Online (Sandbox Code Playgroud)

其中 u_id 是我在 app.xaml.cs 中定义的对象,obj.id 是 InputWindow 中的输入变量。

但是,当我关闭 InputWindow 并显示 DisplayWindow 时:

// in InputWindow
DisplayWindow window = new DisplayWindow();
window.Show();
Application.Current.MainWindow.Close();
Run Code Online (Sandbox Code Playgroud)

该应用程序还会杀死 InputWindow 中的数据。

所以我的问题是:

有没有办法将数据从关闭的窗口保存到打开的窗口?

can*_*on7 5

设置Application.ShutdownModeShutdownMode.OnExplicitShutdown

您可以在您自己App.xaml或 C# 中的任何其他地方执行此操作。

<Application ... ShutdownMode="OnExplicitShutdown>
    ...
</Application>
Run Code Online (Sandbox Code Playgroud)

或者在您的App.xaml.cs

ShutdownMode = ShutdownMode.OnExplicitShutdown;
Run Code Online (Sandbox Code Playgroud)

或者别的地方:

Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
Run Code Online (Sandbox Code Playgroud)

要关闭您的应用程序,您需要调用Application.Shutdown()

Application.Current.Shutdown();
Run Code Online (Sandbox Code Playgroud)

您还可以设置Application.ShutdownModeOnLastWindowClose, 在最后一个窗口关闭时(而不是主窗口关闭时)关闭您的应用程序。您可以通过上述任何一种方式执行此操作。


但是,听起来您想让主窗口保持活动状态的唯一原因是您可以将其用作数据存储。我建议使用单独的对象作为数据存储,并从 InputWindow 和 DisplayWindow 中引用它。