“取消”按钮背后的基本思想是使用Escape按键关闭窗口。
来源:WPF编程(Griffith,Sells)
所以这应该工作
<Window>
<Button Name="btnCancel" IsCancel="True">_Close</Button>
</Window>
但是,我期望的行为对我来说没有效果。父窗口是由Application.StartupUri属性指定的主应用程序窗口。有效的是
<Button Name="btnCancel" IsCancel=True" Click="CloseWindow">_Close</Button>
private void CloseWindow(object sender, RoutedEventArgs)
{
this.Close();
}
最佳答案
是的,它仅适用于对话框,因为普通窗口没有“取消”的概念,它与DialogResult.Cancel从WinForms中的ShowDialog返回相同。
如果要用转义符关闭窗口,则可以在窗口的PreviewKeyDown中添加一个处理程序,选择是否为Key.Escape并关闭表单:
public MainWindow()
{
InitializeComponent();
this.PreviewKeyDown += new KeyEventHandler(CloseOnEscape);
}
private void CloseOnEscape(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape)
Close();
}