取消按钮的基本思路是允许通过按下Esc键关闭窗口。
您可以将“取消”按钮的IsCancel属性设置为true,从而使“取消”按钮在不处理Click事件的情况下自动关闭对话框。
来源:Programming 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();
}
- 如果 Window 是普通窗口或对话框,IsCancel 的行为是否不同?只有在调用 ShowDialog 后,IsCancel 才能按照其广告所述地正常工作吗?
- 在按下 Escape 键时,是否需要为具有 IsCancel 设置为 true 的按钮指定显式的 Click 处理程序才能关闭窗口?