РЕШЕНИЕ:
Имеет флаг , чтобы определить, вызывается ли метод Close (), кроме кнопки со значком X. (например: IsNonCloseButtonClicked;)
Содержит условный оператор внутри Closing () метод события, который проверяет, является ли IsNonCloseButtonClicked ложным.
Если false, приложение пытается закрыть себя, кроме кнопки со значком X. Если это правда, это означает, что кнопка X была нажата для закрытия этого приложения.
[Код образца]
private void buttonCloseTheApp_Click (object sender, RoutedEventArgs e) {
IsNonCloseButtonClicked = true;
this.Close (); // this will trigger the Closing () event method
}
private void MainWindow_Closing (object sender, System.ComponentModel.CancelEventArgs e) {
if (IsNonCloseButtonClicked) {
e.Cancel = !IsValidated ();
// Non X button clicked - statements
if (e.Cancel) {
IsNonCloseButtonClicked = false; // reset the flag
return;
}
} else {
// X button clicked - statements
}
}