Откройте окно настроек WPF из приложения «Формы» [дубликат]
Possible Duplicate:
Notification when WPF UI closes
Я задал очень похожий вопрос раньше, но я не получил никакого полезного ответа. Я надеюсь, что кто-то может мне помочь.
У меня есть существующее приложение в трее, запрограммированное как приложение Windows Form. У меня есть существующая форма настроек, запрограммированная как WPF.
Приложение Tray должно иметь возможность: * Откройте приложение «Настройки» n раз, одновременно открываясь только один экземпляр * Получать уведомления, когда пользователь закрывает приложение настроек.
Приложение «Настройки» использует ResourceDictionary, что, по моему мнению, означает, что оно должно запускаться из App.xaml.
Я могу заставить окно настроек открыться один раз и уведомить лоток, когда он закрывается, используя следующий код, но я не могу заставить его открыться снова.
if (gui == null)
{
//shell = new mainWindow();
//shell.CloseEvent += settings_FormClosed;
gui = new App();
//gui.ShutdownMode = ShutdownMode.OnExplicitShutdown;
gui.MainWindow = shell;
gui.InitializeComponent();
//gui.Run();
gui.Exit += new System.Windows.ExitEventHandler(settings_FormClosed);
IsUIOpen = true;
}
Если я раскомментирую строки выше, я могу перехватить событие close и установить Visibility в Hidden. В следующий раз, когда пользователь выберет «Настройки», я смогу вернуть его в «Видимый». Однако при первом открытии настроек оно не будет вызывать событие Exit, а оболочка не получает весь ReferenceDictionary (или теряет к нему доступ), поэтому окно не отображается должным образом.
Есть ли способ запустить WPF из приложения и получить доступ к MainWindow (который часто кажется нулевым и не относится к типу моего собственного окна), чтобы пользовательский слушатель мог быть добавлен в mainWindow?
Кроме того, есть ли способ избавиться от статического приложения, чтобы я мог восстановить его в следующий раз, когда пользователь нажимает на Настройки.
Я знаю, что должен быть какой-то способ заставить WPF хорошо играть с Win Forms. Спасибо всем, кто пытается помочь. Это вызывает у меня сильные головные боли.