WPF中的Windows关闭按钮

WPF中的Windows关闭按钮,wpf,Wpf,我目前正在使用Caliburn框架开发一个WPF应用程序。在应用程序窗口的右上角,有一个windows关闭(X)按钮。我想捕捉windows关闭按钮的事件。但是,当应用程序窗口关闭时,淡出将开始,无论是否有任何按钮将关闭应用程序窗口。此外,当应用程序关闭时,如果有任何更改,应用程序将询问用户是否要保存更改。但是,我只能设法让应用程序中的退出按钮弹出保存更改消息,然后开始淡出,但windows关闭(X)按钮不会出现这种情况。当我按下windows关闭(X)按钮时,淡出将首先开始*(理论上,这不应该

我目前正在使用Caliburn框架开发一个WPF应用程序。在应用程序窗口的右上角,有一个windows关闭(X)按钮。我想捕捉windows关闭按钮的事件。但是,当应用程序窗口关闭时,淡出将开始,无论是否有任何按钮将关闭应用程序窗口。此外,当应用程序关闭时,如果有任何更改,应用程序将询问用户是否要保存更改。但是,我只能设法让应用程序中的退出按钮弹出保存更改消息,然后开始淡出,但windows关闭(X)按钮不会出现这种情况。当我按下windows关闭(X)按钮时,淡出将首先开始*(理论上,这不应该发生,它应该先显示保存更改消息,然后再淡出)*。在淡出过程中,将显示“保存更改”消息。最后,应用程序崩溃,因为应用程序无法关闭,因为消息仍然显示在应用程序中。有人知道如何解决这个问题吗?下面是我用于该问题的代码

wpf视图背后的代码-我使用它捕获WINDOWS关闭按钮的事件:

 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)