我正在从托盘应用程序打开 WPF 窗口。我使用以下代码打开窗口:
if (gui == null)
{
gui = new App();
gui.MainWindow = new mainWindow();
gui.InitializeComponent();
IsUIOpen = true;
}
else if (!IsUIOpen)
{
gui.InitializeComponent();
gui.MainWindow.Show();
gui.MainWindow = new mainWindow();
IsUIOpen = true;
}
我需要从 App 级别运行 UI,因为它使用资源字典。问题是,当用户关闭窗口时,我需要运行代码,但似乎没有一个事件处理程序通知我。
我尝试了以下方法:
gui.Exit += new System.Windows.ExitEventHandler(settings_FormClosed);
gui.MainWindow.Closed += new EventHandler(settings_FormClosed);
我也尝试过gui.Deactivated
, gui.SessionEnding
, gui.MainWindow.Closing
, gui.MainWindow.Deactivated
, 可能还有其他一些。
当用户关闭窗口时,会从 Shell.xaml 调用此代码:
private void Cancel_Click(object sender, RoutedEventArgs e)
{
presenter.Close();
this.Close();
}
我意识到 App 是静态的,所以它永远不会关闭,但是这些事件处理程序之一应该将我连接到关闭事件。
如果有用,流程如下:TrayApp.cs -> App.xaml -> Shell.xaml
任何建议,将不胜感激。提前致谢。