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

时间:2019-02-18 13:52:57

标签: c# wpf

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

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

// in InputWindow
(App.Current as App).u_id = obj.id;

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

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

// in InputWindow
DisplayWindow window = new DisplayWindow();
window.Show();
Application.Current.MainWindow.Close();

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

所以我的问题是:

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

2 个答案:

答案 0 :(得分:2)

Application.ShutdownMode设置为ShutdownMode.OnExplicitShutdown

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

<Application ... ShutdownMode="OnExplicitShutdown>
    ...
</Application>

或者在您的App.xaml.cs中:

ShutdownMode = ShutdownMode.OnExplicitShutdown;

或其他地方:

Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;

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

Application.Current.Shutdown();

您还可以将Application.ShutdownMode设置为OnLastWindowClose,以在关闭最后一个窗口(而不是关闭主窗口)时关闭应用程序。您可以按照上述任何一种方式进行操作。


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

答案 1 :(得分:1)

        Application.Current.MainWindow.Hide();

您可以使用此行隐藏窗口...,也可以使用构造函数将要使用的信息传递到新窗口中。

        DisplayWindow window = new DisplayWindow(object myObject);

该构造函数必须具有要传递的信息,但这也可以解决问题。