2011-10-07 5 views
27

가능한 중복에 WPF에서 창을 닫는 방법 :
How can I assign the 'Close on Escape-key press' behavior to all WPF windows within a project?키 탈출

나는 사용자가 탈출 버튼을 클릭하면 내 WPF 프로젝트에서 창을 닫으려면. 모든 창에 코드를 작성하고 싶지는 않지만 사용자가 이스케이프 키를 눌렀을 때 잡을 수있는 클래스를 만들고 싶습니다.

+0

내 솔루션이 아니야. 이 ​​모든 창에서 수행되기를 원하지 않습니다. 나는 스타일에 그것을 쓰고 싶지만대로 작동하지 이잖아 인한 인적이 –

+0

체크 아웃 스타일에서 사용할 수 없습니다 [이] [1] 포스트 - 그것을 달성하기 위해 exactlyhow 설명이 [1] : http://stackoverflow.com/questions/3863431/how-can-i-assign-the-close-on-escape-key-press-behavior-to-all-wpf-windows-with –

+0

이것은 http://stackoverflow.com/questions/419596/how-does-the-wpf-button-iscancel-property-work –

답변

97

옵션 1

사용 Button.IsCancel 속성입니다.

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

true로 버튼의 IsCancel 속성을 설정

, 당신은 AccessKeyManager에 등록 된 만들기 버튼을 클릭합니다. 버튼은 이고 사용자가 ESC 키를 누르면 활성화됩니다.

그러나이 방법은 대화 상자에서만 제대로 작동합니다.

옵션 2

당신은 Esc를 누르에 창문을 닫으려는 경우 창에 PreviewKeyDown에 처리기를 추가합니다.

public MainWindow() 
{ 
    InitializeComponent(); 

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

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

버튼을 사용하고 싶지 않습니다 ... 어떤 hw 덕분에, 해결책을 찾았습니다 –

+0

@kishorejangid : 두 번째 코드 예제에서는 단추를 사용하지 않습니다. – CharithJ

+2

@kishorejangid - 여기에 답변을 게시 할 수 있습니까? –