【问题标题】:Reassigning Windows default keyboard shortcuts in C#?在 C# 中重新分配 Windows 默认键盘快捷键?
【发布时间】:2016-06-24 10:59:50
【问题描述】:

我正在重新询问this question,因为假设 OP 正在讨论重新定义 Windows 的快捷方式。我想为我的应用程序做这件事。存在其他几个类似的问题,但所有答案似乎都没有抓住重点。

我正在尝试在我的 C#/WPF 应用程序中为“空格”分配键盘快捷键,并将其与“暂停/继续”按钮配对。我目前正在尝试使用类似于this answer 的RoutedCommand。但是,“空格”似乎是 Windows(或可能是 C#)中的默认快捷方式,它重新单击上次单击的按钮。如果您按下的最后一个按钮是我尝试分配快捷方式的那个按钮,那就太好了!但其他方面不太好。

如何删除默认使用的“空格”以保留它以供我的按钮使用?

【问题讨论】:

  • 您是否尝试过创建一个全局PreviewKeyDown 处理程序,然后在按下空格键时取消默认事件(e.Cancel = true)?
  • 用户界面最重要的品质是它是可发现和可预测的。根据需要将按钮的 Text 属性更改为:“Pause”或“Continue”,这一切都开始对每个人都有意义,而无需编写手册或编写任何代码:)

标签: c# wpf keyboard-shortcuts


【解决方案1】:

由于普通 Button 将捕获 KeyDown 事件,如果它有焦点,您最好的选择可能是在最顶层监听 PreviewKeyDown 事件。在事件处理程序中查找 Space 键,将其重定向到 Pause/Continue 和 Cancel 事件参数,这样它就不会传播到当前焦点按钮的 KeyDown 事件。

【讨论】:

  • 谢谢,这并不完美,但它让我完成了 90% 的工作。我希望避免顶级重定向。使用静态 RoutingCommand 使其工作几乎没有成功,但如果我从 ViewModelLocator 解析 ViewModel,我可以更直接地访问播放/暂停功能。
猜你喜欢
  • 1970-01-01
  • 2012-03-07
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 2018-07-13
  • 2011-04-08
相关资源
最近更新 更多