WPF UI关闭时的通知
我正在从托盘应用程序打开一个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
任何建议,将不胜感激。 提前致谢。
您应该尝试Closing事件。 本文提供了有关何时WPF实际关闭(而不仅仅是窗口)的有用信息。
乔希能够给出正确的解决方案。 你可以在这里看到他的答案。
基本上,我需要将WPF作为一个单独的进程启动,然后使用MyProcess.WaitForEnd()调用。 我把它添加到一个线程,所以它不会阻止托盘。 代码如下:
上述就是C#学习教程:WPF UI关闭时的通知分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
Process myProcess = new Process(); myProcess.StartInfo.UseShellExecute = false; myProcess.StartInfo.FileName = "C:\mysettingsapp\mysettingsapp.exe"; // replace with path to your settings app myProcess.StartInfo.CreateNoWindow = false; myProcess.Start(); // the process is started, now wait for it to finish myProcess.WaitForExit(); // use WaitForExit(int) to establish a timeout
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1012636.html