WPF Button.IsCancel 属性如何工作?

2023-12-29

取消按钮背后的基本思想是通过 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(使用前将#替换为@)

WPF Button.IsCancel 属性如何工作? 的相关文章

随机推荐

  • .Net:如何创建独立于供应商的数据集、表适配器、绑定(数据库在运行时决定)

    我有一个 C Windows 窗体应用程序 其原型是在 SQL Server 强类型数据集 上创建的 在其最终版本中 应用程序必须能够在 SQL Server MySQL 或 Oracle 上运行 现在我想知道原型中的哪些部分 如果有 可以
  • MongoDB 5.0+ 需要支持 AVX 的 CPU。容器启动失败

    我正在尝试使用 docker compose 文件在 docker 容器中运行 mongo 6 但它总是退出并出现警告 Docker 版本 23 0 4 内部版本 f480fb1 Docker compose版本 v2 17 2 docke
  • 预渲染不会保留用于捕获第二遍的变量值

    我查看了有关如何预渲染 Blazor 服务器应用程序然后分两次渲染的各种文章 我已经审查了生命周期 并且非常清楚这是预期的行为 主要是为了提供良好的性能 我不想关闭预渲染 所以在加载数据结构和类似的东西时我必须考虑它 我需要能够运行与数据库
  • PHP 中的优先运算符“OR”和“=”

    a 1 a OR a somthing echo a 1 Why If 比 OR 优先得多 那么为什么 OR 先执行呢 当您在两个语句之间放置 OR 时 如果第一个语句返回 true 则第二个语句永远不会被执行 在这种情况下 第一个语句 a
  • 使用 Nashorn JavaScript 引擎访问 ScriptContext 变量 (Java 8)

    我使用了以下代码RhinoJava 中的 JavaScript 引擎 Test public void testRhino throws ScriptException final ScriptEngineManager factory n
  • 仅使用 HTML/CSS 创建粗箭头

    有没有办法仅使用 html 和 css 创建 4 个指向上 下 左 右的粗箭头 使用 s 和边框创建箭头的主干非常容易 这是箭头头的对角线 我不知道该怎么做 我需要它在 IE7 和所有现代浏览器中工作 我使用 jQuery 并且很高兴依赖它
  • 包含关键字的 Linq 不同记录

    我需要根据汽车关键字搜索返回不同的记录列表 例如 Alfa 147 问题是 由于我有 3 辆 Alfa 汽车 它返回 1 3 条记录 似乎 1 表示 Alfa 和 147 结果 3 表示 Alfa 结果 EDIT SQL Server 查询
  • gitolite 后接收挂钩未触发

    In my gitolite rc我有的文件 LOCAL CODE gt ENV HOME gitolite local 然后在ENABLE我已启用的同一文件的部分repo specific hooks ENABLE gt COMMANDS
  • 将录制的 Twilio 音频发送到 Lex

    目前我可以录制用户输入 将录制 URL 传递给所需的函数 并在本地下载音频文件 我试图对音频文件执行的操作是获取音频文件的缓冲区以发送到 Lex 或者将其转换为 Lex 需要的格式 根据 AWS 文档 输入流参数值接受以下值 var par
  • Java:网络设置窗口

    我正在寻找一种方法来对带有点的文本字段进行编程 例如 Windows 网络设置对话框中的点 参见 gt gt https i stack imgur com gayeY jpg https i stack imgur com gayeY j
  • PrimeFaces 的惰性数据模型加载方法未调用

    我碰巧不明白为什么我的加载方法没有在我的 primefaces 表的惰性数据模型中调用 我的 xhtml 页面是这样的
  • Heroku:当我执行“heroku run console”时,我需要付费吗?

    我分别运行了三个命令 bash console and node 当我做heroku ps我明白了 heroku ps Process State Command run 1 complete for 11m console run 2 c
  • Pl/SQL 嵌套过程异常处理

    这是关于通过多个级别的 PL SQL 过程进行错误处理的最佳实践问题 我查看了其他一些问题来帮助我解决问题 特别是this one https stackoverflow com questions 7360565 pl sql excep
  • 运行spring boot原生应用程序,无法加载资源文件

    我正在尝试将 Spring Boot 应用程序编译为本机应用程序并使用 docker 运行它 我使用的是 spring graalvm native 版本 0 8 5 和 Spring Boot 版本 2 4 1 我正在尝试使用 sprin
  • aws ec2:如何从ubuntu实例内部知道公共IP [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了一个 amazon web services 实例并使用 Ubuntu 14 04 amazon 机器映像 现在我可以 ssh 进
  • Notepad++ 崩溃后显示空值

    我正在 Notepad 中编辑保存的文件 不幸的是 我没有关闭 Notepad 应用程序 PC 由于电池电量耗尽而断电 当电源重新打开时 我打开我的文件 发现只有 nul nul nul nul nul 这是一个文本文件 我正在其中保存 x
  • 无法在 PowerShell 中将字符串转换为 int

    我正在尝试使用 PowerShell 将字符串转换为整数 然而 它不断告诉我 我没有有效的号码 尽管我确信我有 首先 这是我如何获取变量以及类型的打印输出等 以确保有效性 obj New Object TypeName PSCustomOb
  • 如何使用SQL Server 2008 Reporting Services的WebService

    我创建了一个报表并将其发布到 Report Server 2008 效果很好 我可以打电话http 服务器名称 81 报告在我的浏览器中查看并导出报告 我现在想做的是编写一个应用程序 使用该报告创建一个 Excel 文件 根据 Report
  • 如何根据第一个下拉列表的选择更新第二个下拉列表?

    我有两个 DropDownListFor 助手 第二个的 SelectList 取决于第一个助手中选择的值 因此 我需要做的是 当用户从第一个 DropDownListFor 帮助器中选择一个值时 必须使用正确的值更新第二个 DropDow
  • WPF Button.IsCancel 属性如何工作?

    取消按钮背后的基本思想是通过 Escape 按键关闭窗口 您可以设置 IsCancel 属性 取消按钮设置为 true 导致 取消按钮自动关闭 对话框不处理 Click 事件 来源 WPF 编程 Griffith 销售 所以这应该有效