2011-10-07 68 views
27

可能重複:
How can I assign the 'Close on Escape-key press' behavior to all WPF windows within a project?如何關閉在WPF中的窗口上的Esc鍵

我想關閉的窗戶,我的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> 

當您設置一個按鈕,真正的IsCancel屬性,創建與AccessKeyManager註冊的 按鈕。該按鈕是 然後在用戶按下ESC鍵時激活。

但是,這隻適用於對話框。

1選項

你的窗口,如果你想關閉Esc鍵按下Windows添加一個處理程序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 - 你可以在這裏發佈你的答案嗎? –