Windows 上的 VisualElement 访问键

访问键是键盘快捷方式,它为用户提供了一种直观的方式,通过键盘(而不是通过触摸或鼠标)快速导航并与应用的可视 UI 进行交互,从而提高 Windows 上应用的可用性和可访问性。 它们是 Alt 键和一个或多个字母数字键的组合,通常按顺序按下。 使用单个字母数字字符的访问键会自动支持键盘快捷方式。

访问键提示是在包含访问键的控件旁边显示的浮动锁屏提醒。 每个访问键提示都包含激活关联控件的字母数字键。 当用户按 Alt 键时,将显示访问键提示。

此 .NET Multi-platform App UI (.NET MAUI) Windows 平台特定内容用于指定 VisualElement 的访问键。 通过将 VisualElement.AccessKey 附加属性设置为字母数字值,还可以选择将 VisualElement.AccessKeyPlacement 附加属性设置为 AccessKeyPlacement 枚举的值、将 VisualElement.AccessKeyHorizontalOffset 附加属性设置为 double 以及将 VisualElement.AccessKeyVerticalOffset 附加属性设置为 double 以在 XAML 中使用它:

<TabbedPage ...
            xmlns:windows="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific;assembly=Microsoft.Maui.Controls">
    <ContentPage Title="Page 1"
                 windows:VisualElement.AccessKey="1">
        <StackLayout>
            ...
            <Switch windows:VisualElement.AccessKey="A" />
            <Entry Placeholder="Enter text here"
                   windows:VisualElement.AccessKey="B" />
            ...
            <Button Text="Access key F, placement top with offsets"
                    Clicked="OnButtonClicked"
                    windows:VisualElement.AccessKey="F"
                    windows:VisualElement.AccessKeyPlacement="Top"
                    windows:VisualElement.AccessKeyHorizontalOffset="20"
                    windows:VisualElement.AccessKeyVerticalOffset="20" />
            ...
        </StackLayout>
    </ContentPage>
    ...
</TabbedPage>

或者,可以使用 Fluent API 在 C# 中使用它:

using Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific;
...

var page = new ContentPage { Title = "Page 1" };
page.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows>().SetAccessKey("1");

var switchView = new Switch();
switchView.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows>().SetAccessKey("A");
var entry = new Entry { Placeholder = "Enter text here" };
entry.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows>().SetAccessKey("B");
...

var button4 = new Button { Text = "Access key F, placement top with offsets" };
button4.Clicked += OnButtonClicked;
button4.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows>()
    .SetAccessKey("F")
    .SetAccessKeyPlacement(AccessKeyPlacement.Top)
    .SetAccessKeyHorizontalOffset(20)
    .SetAccessKeyVerticalOffset(20);
...

VisualElement.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows> 方法指定此平台特定内容仅在 Windows 上运行。 Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific 命名空间中的 VisualElement.SetAccessKey 方法用于设置 VisualElement 的访问键值。 VisualElement.SetAccessKeyPlacement 方法(可选)指定用于显示访问键提示的位置,AccessKeyPlacement 枚举提供以下可能的值:

  • Auto – 指示访问键提示位置将由操作系统确定。
  • Top – 指示访问键提示将位于 VisualElement 的上边缘之上。
  • Bottom – 指示访问键提示将位于 VisualElement 的下边缘之下。
  • Right – 指示访问键提示将位于 VisualElement 的右边缘右侧。
  • Left – 指示访问键提示将位于 VisualElement 的左边缘左侧。
  • Center – 指示访问键提示将覆盖在 VisualElement 的中心位置。

注意

通常,Auto 键提示位置就足够了,其中包括对自适应用户界面的支持。

VisualElement.SetAccessKeyHorizontalOffsetVisualElement.SetAccessKeyVerticalOffset 方法可用于更精细地控制访问键提示位置。 SetAccessKeyHorizontalOffset 方法的参数指示向左或向右移动访问键提示的距离,SetAccessKeyVerticalOffset 方法的参数指示向上或向下移动访问键提示的距离。

注意

设置 Auto 访问键位置时,无法设置访问键提示偏移量。

此外,可以使用 GetAccessKeyGetAccessKeyPlacementGetAccessKeyHorizontalOffsetGetAccessKeyVerticalOffset 方法检索访问键值及其位置。

结果是,通过按 Alt 键,可以在定义访问键的任何 VisualElement 实例旁边显示访问键提示:

VisualElement access keys platform-specific.

当用户激活访问键时,通过按 Alt 键,然后按访问键,将执行 VisualElement 的默认操作。 例如,当用户在 Switch 上激活访问键时,将切换 Switch。 当用户在 Entry 上激活访问键时,Entry 将获得焦点。 当用户在 Button 上激活访问键时,将执行 Clicked 事件的事件处理程序。

有关访问键的详细信息,请参阅访问键