Поэтому я предпочел подход от sipwiz , потому что я не хотел отключать все сочетания клавиш (я все еще хочу использовать ALT-Left и т. Д., Но не Backspace).
Для меня с помощью окна навигации WPF переопределение метода OnKeyDown
не работало вообще, окно все еще возвращалось назад, когда я нажимал клавишу Backspace. Переопределение OnPreviewKeyDown
, казалось, с самого начала работало, но затем я столкнулся с проблемами, когда мне понадобилась клавиша Backspace для работы с текстовыми полями.
Итак, я взял то, что я узнал из подхода Эд Андерсена , и добавил следующий код в свой конструктор NavigationWindow:
KeyGesture backKeyGesture = null;
foreach(var gesture in NavigationCommands.BrowseBack.InputGestures)
{
KeyGesture keyGesture = gesture as KeyGesture;
if((keyGesture != null) &&
(keyGesture.Key == Key.Back) &&
(keyGesture.Modifiers == ModifierKeys.None))
{
backKeyGesture = keyGesture;
}
}
if (backKeyGesture != null)
{
NavigationCommands.BrowseBack.InputGestures.Remove(backKeyGesture);
}