如果您声明
MenuItem
,我总是看到它们的 Header
属性声明如下:
<MenuItem Header="_Edit">
<MenuItem Header="_Undo"/>
<MenuItem Header="_Redo"/>
</MenuItem>
而不是像这样:
<MenuItem Header="Edit">
<MenuItem Header="Undo"/>
<MenuItem Header="Redo"/>
</MenuItem>
这是有原因的还是只是一个约定?在设计器中,无论我后面有没有下划线,似乎都没有影响。
用于指定键盘快捷键。
"_Edit"
表示 CTRL + E 将激活该菜单项,而
"E_dit"
表示 CTRL + D 可以工作。
此外,带下划线的字母在聚焦时会有下划线,以提示用户使用键盘快捷键。
下划线后面的字符是 AccessKey(不是 crthompson 的答案中提到的“键盘快捷键”又名 KeyGesture)。
按下 Alt 键时,所有菜单项的访问键均显示为下划线。然后输入AccessKey
在您的示例中,这允许通过按 Alt+E(打开“编辑”菜单)然后按 U(无论您是否仍然按住 Alt 键或之前释放它)来执行“撤消”命令,从而快速执行“撤消”命令。
这一切都是由 Windows 菜单处理程序自动处理的。
与此相反,键盘快捷键(例如通常使用 Ctrl+Z 用于撤消)独立于菜单,必须在代码中或通过 WPF KeyBinding实现。