"取消"按钮背后的基本思想是使用Escape Keypress关闭窗口.
您可以将"取消"按钮上的IsCancel属性设置为true,从而使"取消"按钮自动关闭对话框而不处理Click事件.
资料来源:编程WPF(格里菲斯,卖出)
所以这应该工作
<Window>
<Button Name="btnCancel" IsCancel="True">_Close</Button>
</Window>
Run Code Online (Sandbox Code Playgroud)
然而,我期望的行为并不适合我.父窗口是Application.StartupUri属性指定的主应用程序窗口.有效的是
<Button Name="btnCancel" IsCancel=True" Click="CloseWindow">_Close</Button>
private void CloseWindow(object sender, RoutedEventArgs)
{
this.Close();
}
Run Code Online (Sandbox Code Playgroud)
是否有任何直接的方式告诉整个WPF应用程序通过尝试关闭当前关注的寡妇来对Escape键按下做出反应?手动设置命令和输入绑定并不是很麻烦但是我想知道在所有窗口中重复这个XAML是否是最优雅的方法?
<Window.CommandBindings>
<CommandBinding Command="Close" Executed="CommandBinding_Executed" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Key="Escape" Command="Close" />
</Window.InputBindings>
Run Code Online (Sandbox Code Playgroud)
任何建设性的建议欢迎!