Я работаю над проектом, который использует MVVM, KeyBinding и ICommand.
У меня в одном окне несколько вложенных видов (UserControls), и многие из них используют одну и ту же привязку клавиш "Ctrl + S" для запуска SaveCommand
.
ViewModel, связанный с View, имеет свойство IsSaveCommandAvailable
, которое может определить, доступна ли SaveCommand
в этой ViewModel.
В моем случае, только «корневое» представление должно иметь возможность запустить SaveCommand
, нажав Ctrl + S, вложенные должны игнорировать нажатие клавиши и позволить ему всплыть до корневого представления, что делает все вещи Сохранить.
Я гуглил, что нашел решение, и обнаружил, что могу использовать ICommand.CanExecute
, чтобы вернуть false и избежать запуска KeyBinding.
Но это решение не соответствует моим потребностям, потому что если я нажму Ctrl + S на дочернем View, его SaveCommand
CanExecute вернет false, а нажатие клавиши будет потеряно.
Есть ли способ вспомнить нажатие клавиши, пока связывание клавиш не будет запущено?