在 WPF 中管理标题“关闭”按钮的单击

本文关键字:按钮 单击 关闭 WPF 管理 标题 | 更新日期: 2023-09-27 18:31:08

我有一个窗口,如果用户按下红色的X(关闭)按钮,我想关闭应用程序。为此,我处理关闭事件并Environment.Exit(0);

如果用户结束使用窗口并单击"接受",我想关闭它,但如果我this.Close();,这将触发 Closed 事件并关闭整个应用。

我尝试使用调试器检查事件的发送方参数,但在这两种情况下它都是 Window 对象。有没有办法检查事件触发器的源元素?

我可以使用一个标志,在用户单击"接受"时将其设置为 true,并且在 true 时不进行Environment.Exit(0);,但我认为这不是一个干净的解决方案。

在 WPF 中管理标题“关闭”按钮的单击

OnClose触发器是在尝试关闭窗口时调用的。您可以使用您的条件(标志或确认框)取消它

// exemple with flag
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    if (this.allowedToClose == false)
    {
        // this window will not close
        e.Cancel = true;
    }
    else if (this.appMustClose == true)
    {
        // close the app
        Application.Current.Shutdown();
    }
}

将 e.取消设置为 true 以取消关闭。让它为假,窗户将关闭。您不需要使用 Environment.Exit,除非该窗口不是主窗口。

您可以使用 Application.Current.Shutdown() 代替 Environment.Exit(0)。我认为这是正确的。