2011-10-07 13 views
27

Eventuali duplicati:
How can I assign the 'Close on Escape-key press' behavior to all WPF windows within a project?Come chiudere una finestra in WPF su una fuga chiave

voglio chiudere le finestre nel mio progetto WPF quando l'utente fa clic sul pulsante di fuga. Non voglio scrivere il codice in ogni finestra ma voglio creare una classe che possa catturare quando l'utente preme la chiave di escape.

+0

non è la mia soluzione .. Non voglio nemmeno che il venga eseguito in ogni finestra. Voglio scrivere che in uno stile, ma quello non è lavorare come Propety non è disponibile in stile –

+0

Partenza [questo] [1] post - spiega exactlyhow per raggiungere questo [1] : http://stackoverflow.com/questions/3863431/how-can-i-assign-the-close-on-escape-key-press-behavior-to-all-wpf-windows-with –

+0

Questo è un duplicato di http://stackoverflow.com/questions/419596/how-does-the-wpf-button-iscancel-property-work –

risposta

97

Opzione 1

Usa Button.IsCancel proprietà.

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

Quando si imposta la proprietà IsCancel di un pulsante per vero, si crea un pulsante che viene registrato con l'AccessKeyManager. Il pulsante è quindi attivato quando un utente preme il tasto ESC.

Tuttavia, questo funziona correttamente solo per i dialoghi.

Option2

Si aggiunge un gestore per PreviewKeyDown sulla finestra, se si vuole chiudere le finestre sul Esc stampa.

public MainWindow() 
{ 
    InitializeComponent(); 

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

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

Non voglio usare un pulsante ... Qualsiasi hw grazie, ho trovato la soluzione –

+0

@kishorejangid: Il secondo esempio di codice non utilizza un pulsante. – CharithJ

+2

@kishorejangid - Puoi pubblicare la tua risposta qui? –

Problemi correlati