取消按钮背后的基本思想是通过 Escape 按键关闭窗口。
您可以设置 IsCancel 属性
取消按钮设置为 true,导致
取消按钮自动关闭
对话框不处理 Click
事件。
来源:WPF 编程(Griffith,销售)
所以这应该有效
<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();
}
- 根据窗口是普通窗口还是对话框,IsCancel 的行为是否有所不同? IsCancel 是否仅在调用 ShowDialog 时才如宣传的那样工作?
- 按钮(IsCancel 设置为 true)是否需要显式 Click 处理程序才能在按 Escape 时关闭窗口?
是的,它只适用于对话框,因为普通窗口没有“取消”的概念,它与 WinForms 中从 ShowDialog 返回的 DialogResult.Cancel 相同。
如果你想通过转义关闭一个窗口,你可以向窗口上的 PreviewKeyDown 添加一个处理程序,判断它是否是 Key.Escape 并关闭窗体:
public MainWindow()
{
InitializeComponent();
this.PreviewKeyDown += new KeyEventHandler(CloseOnEscape);
}
private void CloseOnEscape(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape)
Close();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)