可能重复:
WPF UI 关闭时的通知
我以前问过一个非常相似的问题,但我没有得到任何有用的回答。我希望那里有人可以帮助我。
我有一个现有的托盘应用程序被编程为 Windows 窗体应用程序。我有一个编程为 WPF 的现有设置表单。
托盘应用程序需要能够: * 打开设置应用程序 n 次,一次只打开一个实例 * 当用户关闭设置应用程序时接收通知。
Settings App 使用 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;
}
如果我取消注释上面的行,我可以拦截关闭事件,并将可见性设置为隐藏。下次用户选择设置时,我可以将其设置回可见。但是,第一次打开 Settings 时,它不会触发 Exit 事件,并且 shell 没有获取所有 ReferenceDictionary(或无法访问它),因此窗口无法正确显示。
有没有办法从应用程序运行 WPF,并访问 MainWindow(它通常似乎为 null,并且不是我自己的窗口的类型),以便可以将自定义侦听器添加到 mainWindow?
或者,有没有办法处理静态应用程序,以便我可以在下次用户单击设置时重新实例化它。
我知道必须有某种方法可以让 WPF 与 Win Forms 配合得很好。感谢所有试图提供帮助的人。这一直让我很头疼。