TOC

This article has been localized into Chinese by the community.

控件概念:

访问键

访问键的概念(有时称为加速键键盘加速器)允许您通过按住Alt键然后按键盘上的其他键来到达窗口内的特定控件。 这增强了窗口的可用性,因为它允许用户使用键盘导航窗口,而不必使用鼠标。

定义访问键

为WPF控件定义访问键非常简单,但该方法可能会让您感到惊讶。 通常,会有一个属性,但不适用于访问键。 相反,您可以通过在控件的Text / Content属性中使用添加下划线前缀来定义访问键。 例如,像这样:

<Button Content="_New"></Button>

注意N字符前面的下划线(_) - 这会将N键转换为此Button控件的指定访问键。 默认情况下,控件的外观不会改变,正如您在此示例中所示,我已为所有按钮定义了访问键:

但是,只要按下键盘上的Alt键,可用的下划线就会突出显示可用的访问键:

按住Alt键的同时,您现在可以按其中一个访问键(例如N,O或S)来激活特定按钮。 它会像用鼠标点击一样反应。

访问键适用于对话框/窗口中的单个元素,但它们在传统的Windows菜单中更有用,您通常需要在到达所需的菜单项之前单击菜单项层次结构。 以下是Visual Studio的示例:

在这种情况下,当我想要启动一个新项目时,我可以按住Alt键,然后按F(对于文件),然后按N(对于),而不必通过几次鼠标移动和单击来浏览菜单。 然后是P(对于项目)。 当然,这也可以通过常规键盘快捷键(Ctrl + Shift + N)完成,但是在您到达菜单层次结构的最后一级之前,该快捷方式是不可见的,因此除非您已将其记忆,否则可能更容易 使用访问键,因为只要按下Alt键,它们就会以视觉方式突出显示。

哪些字符应该用作访问键?

您可能想要使用控制文本/内容中找到的任何字符,但实际上有选择正确字符的准则。 最重要的规则当然是选择一个未被其他控件使用的字符,但除此之外,您应该使用以下指南:

  • 使用第一个单词第一个字符
  • 如果不可能,请使用第二个或第三个单词的第一个字符(例如,Save As为中的A
  • 如果那是不可能的,请使用第一个单词的第二个字符(例如Open中的P
  • 如果那是不可能的,请使用第二个或第三个单词的第二个字符(例如,在Save All中的l
  • 一般来说,你可能想要避免像il这样的窄字符,并选择更宽的字符,如m, s, w等。

捆绑两个控件

在我们到目前为止看到的示例中,我们已经能够直接在我们想要访问的控件上定义Access Key。 但至少有一个例子,这是不可能直接实现的:当你有一个输入控件,例如 一个TextBox,指示其用途的文本在实际的TextBox控件中不存在。 相反,您通常会使用第二个控件来指示TextBox控件的用途。 这通常是Label控件。

因此,在此示例中,Label控件将保存描述性文本,因此也包含Access Key,但您要注意的控件将是TextBox控件。 没问题 - 我们可以使用Label的Target属性将它与TextBox(或任何其他控件)绑定在一起,如下所示:

<StackPanel Margin="20">
    <Label Content="_First name:" Target="{Binding ElementName=txtFirstName}" />
    <TextBox Name="txtFirstName" />
    <Label Content="_Last name:" Target="{Binding ElementName=txtLastName}" />
    <TextBox Name="txtLastName" />
    <Button Content="_Save" Margin="20"></Button>
</StackPanel>

注意如何为Label控件指定Access Key,然后使用Target属性绑定到相关的TextBox控件,我们使用基于ElementNameBinding来执行实际工作。 现在我们可以使用Alt + F和Alt + L访问两个TextBox控件,使用Alt + S访问Button。 以下是它的外观:

小结

通过在窗口/对话框中使用访问键,您可以更轻松地仅使用键盘进行导航。 这在高级用户中尤其受欢迎,他们会尽可能地使用键盘来支持鼠标。 您应该始终使用访问键,尤其是您的菜单。

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!