WPF中的Windows关闭按钮
我目前正在使用Caliburn框架开发一个WPF应用程序。在应用程序窗口的右上角,有一个windows关闭(X)按钮。我想捕捉windows关闭按钮的事件。但是,当应用程序窗口关闭时,淡出将开始,无论是否有任何按钮将关闭应用程序窗口。此外,当应用程序关闭时,如果有任何更改,应用程序将询问用户是否要保存更改。但是,我只能设法让应用程序中的退出按钮弹出保存更改消息,然后开始淡出,但windows关闭(X)按钮不会出现这种情况。当我按下windows关闭(X)按钮时,淡出将首先开始*(理论上,这不应该发生,它应该先显示保存更改消息,然后再淡出)*。在淡出过程中,将显示“保存更改”消息。最后,应用程序崩溃,因为应用程序无法关闭,因为消息仍然显示在应用程序中。有人知道如何解决这个问题吗?下面是我用于该问题的代码 wpf视图背后的代码-我使用它捕获WINDOWS关闭按钮的事件:WPF中的Windows关闭按钮,wpf,Wpf,我目前正在使用Caliburn框架开发一个WPF应用程序。在应用程序窗口的右上角,有一个windows关闭(X)按钮。我想捕捉windows关闭按钮的事件。但是,当应用程序窗口关闭时,淡出将开始,无论是否有任何按钮将关闭应用程序窗口。此外,当应用程序关闭时,如果有任何更改,应用程序将询问用户是否要保存更改。但是,我只能设法让应用程序中的退出按钮弹出保存更改消息,然后开始淡出,但windows关闭(X)按钮不会出现这种情况。当我按下windows关闭(X)按钮时,淡出将首先开始*(理论上,这不应该
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:
私有void FormFadeOutAnimation_已完成(对象发送方,事件参数e)
{
在我的xaml中,我使用以下代码调用函数,以便在关闭时弹出保存更改消息:
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”事件时,如果用户进行了任何更改,则会显示保存更改消息
有人知道如何解决这个问题吗
谢谢你的帮助
Charles使用窗口。关闭事件而不是
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)