Как закрыть окно, но приложение остается активным? - PullRequest
0 голосов
/ 18 февраля 2019

предположим, у меня есть 2 окна: InputWindow и DisplayWindow

В настоящее время: я хочу использовать InputWindow для хранения данных через переменную приложения

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

, где u_id - это объект, который я определил в приложении.xaml.cs и obj.id - переменная ввода в InputWindow.

Однако, когда я закрываю InputWindow и отображаю DisplayWindow:

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

Приложение также уничтожает данные в InputWindow.

Итак, мой вопрос:

Есть ли способ сохранить данные из закрытого окна в открытое окно?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Установите 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();

Youтакже можно установить Application.ShutdownMode на OnLastWindowClose, чтобы закрыть приложение, когда последнее окно закрыто (а не когда главное окно закрыто).Вы можете сделать это любым из способов, описанных выше.


Однако, похоже, единственная причина, по которой вы хотите сохранить свое главное окно, состоит в том, что вы можете использовать его как хранилище данных.Я рекомендую использовать отдельный объект в качестве хранилища данных и ссылаться на него как из вашего InputWindow, так и из вашего DisplayWindow.

0 голосов
/ 18 февраля 2019
        Application.Current.MainWindow.Hide();

Вы можете скрыть окно, используя эту строку ... или вы можете передать информацию, которую вы хотите использовать, в новое окно, используя конструктор.

        DisplayWindow window = new DisplayWindow(object myObject);

Этот конструктор должен иметьинформация, которую вы хотите передать, но это также может решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...