Вот как WPF использует ApplicationCommand.Close:
- Сам WPF не имеет встроенного обработчика команд для
ApplicationCommands.Close
, но - WPF выполняет
ApplicationCommand.Close
RoutedCommand всякий раз, когда онполучает сообщение Win32 WM_APPCOMMAND
с lParam=APPCOMMAND_CLOSE
.Это означает, что если любое приложение Win32 отправит вам APPCOMMAND_CLOSE
, будет вызван ваш обработчик ApplicationCommand.Close
.
Документация для APPCOMMAND_CLOSE
дает следующее определение:
Закройте окно (не приложение).
Я бы предположил, что приложения WPF должны обрабатывать ApplicationCommand.Close
так же, и что «окно» будет включать диалоговые окна (как правило, в мире Win32).
Почему вас волнует, что написано в документации Win32?Это может быть важно в трех ситуациях:
- Сценарии доступа
- Клавиатуры с клавишей «Закрыть окно»
- Когда пользователь настроил комбинацию кнопок мышичтобы отправить команду «закрыть окно»
Итак, чтобы ответить на ваш вопрос: Нет, ApplicationCommand.Close
is not зарезервировано для закрытия приложения.Его цель - закрыть окно, в том числе диалоговое окно.Поэтому нет необходимости создавать отдельные команды для закрытия диалоговых окон.
Многие приложения просто используют стиль в App.xaml для установки CommandBinding класса thw Window, и в обработчике они заканчиваются вызовом ((Window)sender).Close()
,Это простое и элегантное решение.