2011-10-07 16 views
27

Duplicar posibles:
How can I assign the 'Close on Escape-key press' behavior to all WPF windows within a project?Cómo cerrar una ventana de WPF en una clave de escape

Quiero cerrar las ventanas en mi proyecto WPF cuando el usuario hace clic en el botón de escape. No quiero escribir el código en cada ventana pero quiero crear una clase que pueda captar cuando el usuario presione la tecla de escape.

+0

esa no es mi solución ... Ni siquiera quiero que se haga en todas las ventanas. Quiero escribir que en un estilo pero eso no es trabajar como Propety no está disponible en estilo –

+0

Salida [esto] [1] de post - explica exactlyhow para lograr este [1] : http://stackoverflow.com/questions/3863431/how-cani-i-assign-the-close-on-escape-key-press-behavior-to-all-wpf-windows-with –

+0

Este es un duplicado de http://stackoverflow.com/questions/419596/how-does-the-wpf-button-iscancel-property-work –

Respuesta

97

Opción 1

Uso Button.IsCancel propiedad.

<Button Name="btnCancel" IsCancel="true" Click="OnClickCancel">Cancel</Button> 

Cuando se establece la propiedad IsCancel de un botón en true, se crea un botón que se ha registrado en el AccessKeyManager. El botón es y luego se activa cuando un usuario presiona la tecla ESC.

Sin embargo, esto funciona correctamente solo para los cuadros de diálogo.

Option2

Se agrega un controlador de PreviewKeyDown en la ventana si desea cerrar ventanas en Esc prensa.

public MainWindow() 
{ 
    InitializeComponent(); 

    this.PreviewKeyDown += new KeyEventHandler(HandleEsc); 
} 

private void HandleEsc(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Escape) 
     Close(); 
} 
+1

No quiero usar un botón ... Cualquier hw gracias, encontré la solución –

+0

@kishorejangid: El segundo ejemplo de código no usa un botón. – CharithJ

+2

@kishorejangid - ¿Puedes publicar tu respuesta aquí? –

Cuestiones relacionadas