2011-10-07 142 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 - 你可以在这里发布你的答案吗? –