我认为这不能使用样式来完成。不过,您可以做的是在 Window 和Window
类之间创建一个新层,并让该中间层负责处理 Escape 键。为此,首先创建一个名为的新类EscapeWindow
并让它继承自Window
如下:
namespace WpfApplication1
{
public class EscapeWindow : Window
{
public EscapeWindow()
: base()
{
this.KeyDown += new KeyEventHandler(HandleEsc);
}
private void HandleEsc(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape) { this.Close(); }
}
}
}
现在每次创建新窗口时,都可以让它继承自 thisEscapeWindow
而不是Window
. 例如,您MainWindow
将如下所示:
public partial class MainWindow : EscapeWindow
{
public MainWindow()
{
InitializeComponent();
}
}
请注意,由于 WPF Windows 部分是在 XAML 中定义的,因此您还需要更改该部分实现。在这种情况下,MainWindow.xaml
看起来像这样:
<local:EscapeWindow x:Class="WpfApplication1.MainWindow"
xmlns:local="clr-namespace:WpfApplication1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
</Grid>
</local:EscapeWindow>
这可能并不一定会让您的生活更轻松,因为您每次创建 . 时都需要更改引用,但为一般处理按钮Window
提供了一个干净的框架。Escape