我目前正在使用 Caliburn 框架开发 WPF 应用程序。在应用程序窗口的右上角,有一个窗口关闭(X)按钮。我想捕捉 Windows CLOSE 按钮的事件。但是,当应用程序窗口关闭时,无论有什么按钮关闭应用程序窗口,都会开始淡出。此外,当应用程序关闭时,如果有任何更改,应用程序将询问用户是否要保存更改。但是,我只能设法让我的应用程序中的 EXIT 按钮弹出 SAVE CHANGES 消息,然后开始淡出,但 Windows CLOSE(X) 按钮不会发生这种情况。当我按下 windows CLOSE(X) 按钮时,淡出将首先开始*(理论上,这不应该发生,它应该先显示 SAVE CHANGES 消息,然后再显示)*。在淡出期间,会出现 SAVE CHANGES 消息。最后,应用程序崩溃,因为应用程序无法关闭,因为消息仍然显示在应用程序中。有谁知道解决这个问题的任何方法?以下是我用于该问题的代码。
wpf 视图的代码隐藏 - 我用它来捕捉 WINDOWS CLOSE 按钮的事件:
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
if (!closed)
{
e.Cancel = true;
FormFadeOut.Begin();
closed = true;
}
base.OnClosing(e);
}
This code is used to close the application when the fadeout ends:
私人无效FormFadeOutAnimation_Completed(对象发送者,EventArgs e){
this.Close();
}
在我的 xaml 中,我使用此代码来调用函数以在关闭时弹出 SAVE CHANGES 消息:
cal:Message.Attach="[Event Closing] = [Action CloseApp2()]"
在我的视图模型中,上面的 xaml 代码调用了以下函数:
public void CloseApp2()
{
// isClosing = true;
events.Publish(new IsClosingEvent());
// events.Publish(new ClearItemsEvent());
// events.Publish(new SwitchTimerOffEvent());
// Thread.Sleep(2000);
}
当发送“IsClosingEvent”事件时,如果用户进行了任何更改,将出现 SAVE CHANGES 消息。
有谁知道如何解决这个问题?
感谢您提前提供任何帮助。
查尔斯