C# 为什么菜单项标题前面有下划线?

C# 为什么菜单项标题前面有下划线?,c#,wpf,menu,menuitem,C#,Wpf,Menu,Menuitem,如果您正在声明MenuItems,我总是看到它们的头属性声明如下: <MenuItem Header="_Edit"> <MenuItem Header="_Undo"/> <MenuItem Header="_Redo"/> </MenuItem> <MenuItem Header="Edit"> <MenuItem Header="Undo"/> <MenuItem Header=

如果您正在声明
MenuItem
s,我总是看到它们的
属性声明如下:

<MenuItem Header="_Edit">
    <MenuItem Header="_Undo"/>
    <MenuItem Header="_Redo"/>
</MenuItem>
<MenuItem Header="Edit">
    <MenuItem Header="Undo"/>
    <MenuItem Header="Redo"/>
</MenuItem>

而不是像这样:

<MenuItem Header="_Edit">
    <MenuItem Header="_Undo"/>
    <MenuItem Header="_Redo"/>
</MenuItem>
<MenuItem Header="Edit">
    <MenuItem Header="Undo"/>
    <MenuItem Header="Redo"/>
</MenuItem>


这是有原因的还是仅仅是一个惯例?在设计器中,无论是否有下划线,似乎都不会产生任何影响。

指定键盘快捷键是很重要的

“\u Edit”
表示CTRL+E将激活该菜单项,而

“E_dit”
表示CTRL+D组合键可以工作

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


我猜这是一个古老的惯例,使用&来表示“激活键”(char get在菜单中加了下划线,可以与alt键一起使用),但是&在普通文本中不太合适,所以他们将其转换为“ux”,因为它代表下划线。另外:在显示和对焦时,下划线后面的字母加了下划线。