Windows 上的 VisualElement 访问密钥
访问键是键盘快捷方式,它通过为用户提供直观的方式来快速导航和通过键盘而不是触摸或鼠标与应用的可见 UI 进行交互,从而提高通用 Windows 平台 (UWP) 上应用的可用性和辅助功能。 它们是 Alt 键和一个或多个字母数字键的组合,通常按顺序按下。 使用单个字母数字字符的访问键会自动支持键盘快捷方式。
访问键提示是在包含访问键的控件旁边显示的浮动锁屏提醒。 每个访问键提示都包含激活关联控件的字母数字键。 当用户按 Alt 键时,将显示访问键提示。
此 UWP 平台特定功能用于指定 VisualElement
的访问密钥。 通过将 VisualElement.AccessKey
附加属性设置为字母数字值,还可以选择将 VisualElement.AccessKeyPlacement
附加属性设置为 AccessKeyPlacement
枚举的值、将 VisualElement.AccessKeyHorizontalOffset
附加属性设置为 double
以及将 VisualElement.AccessKeyVerticalOffset
附加属性设置为 double
以在 XAML 中使用它:
<TabbedPage ...
xmlns:windows="clr-namespace:Xamarin.Forms.PlatformConfiguration.WindowsSpecific;assembly=Xamarin.Forms.Core">
<ContentPage Title="Page 1"
windows:VisualElement.AccessKey="1">
<StackLayout Margin="20">
...
<Switch windows:VisualElement.AccessKey="A" />
<Entry Placeholder="Enter text here"
windows:VisualElement.AccessKey="B" />
...
<Button Text="Access key F, placement top with offsets"
Margin="20"
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 Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
...
var page = new ContentPage { Title = "Page 1" };
page.On<Windows>().SetAccessKey("1");
var switchView = new Switch();
switchView.On<Windows>().SetAccessKey("A");
var entry = new Entry { Placeholder = "Enter text here" };
entry.On<Windows>().SetAccessKey("B");
...
var button4 = new Button { Text = "Access key F, placement top with offsets", Margin = new Thickness(20) };
button4.Clicked += OnButtonClicked;
button4.On<Windows>()
.SetAccessKey("F")
.SetAccessKeyPlacement(AccessKeyPlacement.Top)
.SetAccessKeyHorizontalOffset(20)
.SetAccessKeyVerticalOffset(20);
...
VisualElement.On<Windows>
方法指定此特定于平台的功能仅在通用 Windows 平台上运行。 Xamarin.Forms.PlatformConfiguration.WindowsSpecific
命名空间中的 VisualElement.SetAccessKey
方法用于设置 VisualElement
的访问键值。 VisualElement.SetAccessKeyPlacement
方法(可选)指定用于显示访问键提示的位置,AccessKeyPlacement
枚举提供以下可能的值:
Auto
– 指示访问键提示位置将由操作系统确定。Top
– 指示访问键提示将位于VisualElement
的上边缘之上。Bottom
– 指示访问键提示将位于VisualElement
的下边缘之下。Right
– 指示访问键提示将位于VisualElement
的右边缘右侧。Left
– 指示访问键提示将位于VisualElement
的左边缘左侧。Center
– 指示访问键提示将覆盖在VisualElement
的中心位置。
注意
通常,Auto
键提示位置就足够了,其中包括对自适应用户界面的支持。
VisualElement.SetAccessKeyHorizontalOffset
和 VisualElement.SetAccessKeyVerticalOffset
方法可用于更精细地控制访问键提示位置。 SetAccessKeyHorizontalOffset
方法的参数指示向左或向右移动访问键提示的距离,SetAccessKeyVerticalOffset
方法的参数指示向上或向下移动访问键提示的距离。
注意
设置 Auto
访问键位置时,无法设置访问键提示偏移量。
此外,可以使用 GetAccessKey
、GetAccessKeyPlacement
、GetAccessKeyHorizontalOffset
和 GetAccessKeyVerticalOffset
方法检索访问键值及其位置。
结果是,通过按 Alt 键,可以在定义访问键的任何 VisualElement
实例旁边显示访问键提示:
当用户激活访问键时,通过按 Alt 键,然后按访问键,将执行 VisualElement
的默认操作。 例如,当用户在 Switch
上激活访问键时,将切换 Switch
。 当用户在 Entry
上激活访问键时,Entry
将获得焦点。 当用户在 Button
上激活访问键时,将执行 Clicked
事件的事件处理程序。
警告
默认情况下,显示模式对话框时,仍可激活对话框后面页面上定义的任何访问密钥。 但是,可以编写自定义逻辑以在此方案中禁用访问密钥。 实现方法是,在 UWP 项目的 MainPage
类中处理 Dispatcher.AcceleratorKeyActivated
事件,并在显示模式对话框时,在事件处理程序中将事件参数 Handled
属性设置为 true
。
有关访问键的详细信息,请参阅访问键。