Así que prefirieron el approach by sipwiz porque no lo hice quiero deshabilitar todos los atajos de teclado (aún quiero usar ALT-Left, etc., pero no el Retroceso).
Para mí, utilizando WPF NavigationWindow, la anulación del método OnKeyDown
no funcionó en absoluto, la ventana aún navegaba hacia atrás cuando presioné la tecla Retroceso. Sobrescribir el OnPreviewKeyDown
parece funcionar para empezar, pero luego me encontré con problemas cuando necesitaba la tecla Retroceso para trabajar con cuadros de texto.
Así que tomó lo que aprendí de la approach by Ed Andersen y yo añadido el siguiente código a mi NavigationWindow constructor:
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);
}
si se refería a la navegación, a continuación, la situación podría ser un poco más complejo, ya que es probable que tenga a manejar Alt + Izquierda y algunos botones del mouse también. – Joey
Esto realmente debería manejar el evento PreviewKeyDown; de lo contrario, si otro control tiene foco (como TextBox), la pulsación de la tecla no será interceptada. Como no ha dicho por qué quiere deshabilitar la tecla de retroceso, tal vez quiera soportarlo en los controles de entrada. –
Hola Abe, funcionó el evento PreviewKeyDown. Muchas gracias. –