如何在WPF窗口中处理"Esc"键?

Mar*_*s2k 5 wpf window esc-key

我想要Escape键来关闭我的WPF窗口.但是,如果有一个控件可以使用该Escape键,我不想关闭Window.有关按ESC键时如何关闭WPF窗口的多种解决方案.例如.WPF Button.IsCancel属性如何工作?

但是,此解决方案会关闭Window,而不考虑是否存在可以使用Escape键的活动控件.

例如.我有一个带有DataGrid的Window.dataGrid上的一列是组合框.如果我正在更改ComboBox,并点击Escape,那么控件应该来自编辑comboBox(正常行为).如果我现在再次击中Escape,那么Window应该关闭.我想要一个通用的解决方案,而不是编写大量的自定义代码.

如果你能用C#提供解决方案那就太棒了.

Abe*_*cht 5

您应该只使用KeyDown事件而不是PreviewKeyDown事件。如果该事件的任何子级Window处理该事件,则该事件不会向上冒泡到窗口(PreviewKeyDown从下到下的隧道Window),因此不会调用您的事件处理程序。