Отключить возврат в wpf - PullRequest
7 голосов
/ 31 марта 2009

Я работаю в приложении WPF, используя C # .net Я хочу знать, есть ли способ отключить кнопку Backspace на определенной странице xaml. Я хочу запретить пользователю использовать кнопку Backspace на этой конкретной странице xaml. Даже если пользователь нажимает кнопку Backspace , никакого эффекта не должно быть.

Спасибо

Ответы [ 3 ]

25 голосов
/ 05 сентября 2011

Если вы не хотите, чтобы backspace возвращался к истории навигации в рамке WPF, включая специальные аппаратные кнопки «Назад», используйте:

NavigationCommands.BrowseBack.InputGestures.Clear();
NavigationCommands.BrowseForward.InputGestures.Clear();
6 голосов
/ 31 марта 2009

Вам нужно будет перехватить событие onKeyDown и установить для обработчика значение true для возврата.

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Back)
    {
         e.Handled = true;
    }
}
1 голос
/ 05 декабря 2014

Поэтому я предпочел подход от 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...