0

假设我有 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 中的数据。

所以我的问题是:

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

4

2 回答 2

5

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


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

于 2019-02-18T14:02:09.773 回答
-1
        Application.Current.MainWindow.Hide();

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

        DisplayWindow window = new DisplayWindow(object myObject);

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

于 2019-02-18T13:56:53.320 回答