为什么 MenuItem 标题前面有下划线?

问题描述 投票:0回答:2

如果您声明

MenuItem
,我总是看到它们的
Header
属性声明如下:

<MenuItem Header="_Edit">
    <MenuItem Header="_Undo"/>
    <MenuItem Header="_Redo"/>
</MenuItem>

而不是像这样:

<MenuItem Header="Edit">
    <MenuItem Header="Undo"/>
    <MenuItem Header="Redo"/>
</MenuItem>

这是有原因的还是只是一个约定?在设计器中,无论我后面有没有下划线,似乎都没有影响。

c# wpf menu menuitem
2个回答
22
投票

用于指定键盘快捷键。

"_Edit"
表示 CTRL + E 将激活该菜单项,而

"E_dit"
表示 CTRL + D 可以工作。

此外,带下划线的字母在聚焦时会有下划线,以提示用户使用键盘快捷键。

来自MSDN


0
投票

下划线后面的字符是 AccessKey(不是 crthompson 的答案中提到的“键盘快捷键”又名 KeyGesture)。

按下 Alt 键时,所有菜单项的访问键均显示为下划线。然后输入AccessKey

  • 如果只有一个命令具有此访问密钥,则执行该命令
  • 或者如果有多个菜单项,则循环使用具有相同 AccessKey 的所有菜单项。

在您的示例中,这允许通过按 Alt+E(打开“编辑”菜单)然后按 U(无论您是否仍然按住 Alt 键或之前释放它)来执行“撤消”命令,从而快速执行“撤消”命令。

这一切都是由 Windows 菜单处理程序自动处理的。

与此相反,键盘快捷键(例如通常使用 Ctrl+Z 用于撤消)独立于菜单,必须在代码中或通过 WPF KeyBinding实现。

© www.soinside.com 2019 - 2024. All rights reserved.