В WPF я хочу изменить стандартное поведение закрытия некоторого окна, чтобы, когда пользователь нажимает красную кнопку закрытия, окно не закрывалось, оно просто скрывалось (и также вызывал некоторый метод).Как я могу это сделать?
Попробуйте переопределить OnClosing в Window.xaml.cs
private override void OnClosing( object sender, CancelEventArgs e ) { e.Cancel = true; //Do whatever you want here.. }
Эта страница должна помочь.
Закрытие может быть обработано, чтобы определить, когда закрывается окно (например, когда вызывается Close). Кроме того, Closing можно использовать для предотвращения закрытия окна. Чтобы предотвратить закрытие окна, можно установить для свойства Cancel аргумента CancelEventArgs значение true.
И
Если вы хотите, чтобы окно отображалось и скрывалось несколько раз в течение жизненного цикла приложения, и вы не хотите переустанавливать окно каждый раз при его отображении, вы можете обработать событие Closing, отменить его и вызвать Спрятать метод. Затем вы можете вызвать Show для того же экземпляра, чтобы открыть его снова.
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) { e.Cancel = true; // this will prevent to close `this.Hide();` // it'll hide the window // here now you can call any method }