2011-10-07 15 views
27

Powiel możliwe:
How can I assign the 'Close on Escape-key press' behavior to all WPF windows within a project?Jak zamknąć okno w WPF na ucieczkę kluczowego

Chcę zamknąć okna w moim projekcie wpf, gdy użytkownik kliknie przycisk ucieczki. Nie chcę pisać kodu w każdym oknie, ale chcę stworzyć klasę, która może złapać, kiedy użytkownik naciśnie klawisz Escape.

+0

To nie jest moje rozwiązanie .. Nie chcę nawet, aby było wykonywane w każdym oknie. Chcę napisać, że w stylu, ale to nie działa jak Propety nie jest dostępny w stylu –

+0

Sprawdź się [to] [1] post - wyjaśnia exactlyhow do osiągnięcia tego celu [1] : http://stackoverflow.com/questions/3863431/how-can-i-assign-the-close-on-escape-key-press-behavior-to-all-wpf-windows- with –

+0

To jest duplikat http://stackoverflow.com/questions/419596/how-does-the-wpf-button-iscancel-property-work –

Odpowiedz

97

Wariant 1

Zastosowanie Button.IsCancel nieruchomość.

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

Kiedy ustawić właściwość IsCancel guzika prawda, stworzyć przycisk, który jest zarejestrowany w AccessKeyManager. Przycisk jest , a następnie aktywowany, gdy użytkownik naciśnie klawisz ESC.

Działa to jednak poprawnie tylko w przypadku okien dialogowych.

Opcja 2

dodać do obsługi PreviewKeyDown na okno, jeśli chcesz, aby zamknąć okna na Esc prasie.

public MainWindow() 
{ 
    InitializeComponent(); 

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

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

Nie chcę używać przycisku ... Każdy hw dzięki, znalazłem rozwiązanie –

+0

@kishorejangid: Drugi przykład kodu nie używa przycisku. – CharithJ

+2

@kishorejangid - Czy możesz zamieścić tutaj swoją odpowiedź? –

Powiązane problemy