wpf - WPF 命令基础结构中的对话框是否有关闭命令?

标签 wpf modal-dialog command

我应该使用 ApplicationCommands.Close用于关闭模式对话框还是该命令被认为是为关闭应用程序保留的?如果是后者,请大家创建Close每个命令 Dialog盒子或只是一个 Close所有模式对话框的命令?

最佳答案

以下是 WPF 如何使用 ApplicationCommand.Close:

  • WPF 本身没有针对 ApplicationCommands.Close 的内置命令处理程序。 ,但是
  • WPF 执行 ApplicationCommand.Close RoutedCommand 每当它收到 Win32 消息时 WM_APPCOMMANDlParam=APPCOMMAND_CLOSE .这意味着如果任何 Win32 应用程序向您发送 APPCOMMAND_CLOSE ,您的 ApplicationCommand.Close处理程序将被调用。

  • documentationAPPCOMMAND_CLOSE给出这个定义:

    Close the window (not the application).



    我认为 WPF 应用程序应该处理 ApplicationCommand.Close以同样的方式,“窗口”将包括对话框(它通常在 Win32 世界中)。

    你为什么关心 Win32 文档所说的内容?在三种情况下它可能很重要:
  • 无障碍场景
  • 具有“关闭窗口”键的键盘
  • 当用户配置了鼠标按键组合发送“关闭窗口”命令时

  • 所以回答你的问题:不,ApplicationCommand.Close不保留用于关闭应用程序。它的目的是关闭窗口,包括一个对话框窗口。因此无需创建单独的命令来关闭对话框。

    许多应用程序简单地使用 App.xaml 中的样式在 Window 类上设置 CommandBinding,并在处理程序中通过调用 ((Window)sender).Close() 结束。 .这是一个简单而优雅的解决方案。

    关于wpf - WPF 命令基础结构中的对话框是否有关闭命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3088846/

    相关文章:

    c# - 如何使用 twitter api 获取好友事件?

    c# - 更改组合框中某些行的背景颜色

    c# - 在使用 MVVM 的 WPF 中,谁负责管理外部通信?

    wpf - 隐藏导航按钮

    iphone - 呈现新 Controller 时取消所有模态转换

    matlab - 如何在 MATLAB 模态中制作等待栏

    php - 通过模态框提交表单,无需离开页面/模态

    git - git clone 和 checkout 有什么区别?

    c# - 自定义 PowerShell 提示符 - 相当于 CMD 的 $M$P$_$+$G?

    windows - 更改以从环境变量 PATH 中删除路径