Windows 上的 VisualElement 存取金鑰

訪問鍵是鍵盤快捷方式,可讓使用者透過鍵盤快速流覽和與應用程式的可見UI互動,而不是透過觸控或滑鼠,改善 通用 Windows 平台(UWP) 上應用程式的可用性和輔助功能。 它們是Alt鍵和一或多個英數位元按鍵的組合,通常會循序按下。 使用單一英數位元的訪問鍵會自動支援鍵盤快捷方式。

存取金鑰秘訣是控件旁顯示的浮動徽章,其中包含訪問鍵。 每個訪問鍵提示都包含啟用相關聯控件的英數位元索引鍵。 當使用者按下 Alt 鍵時,就會顯示存取鍵提示。

這個UWP平臺特定是用來指定的 VisualElement存取金鑰。 它會在 XAML 中取用,方法是將附加屬性設定VisualElement.AccessKey為英數位元值,並選擇性地將附加屬性設定為 列舉值AccessKeyPlacementVisualElement.AccessKeyHorizontalOffset附加屬性至 double,並將VisualElement.AccessKeyVerticalOffset附加屬性設定VisualElement.AccessKeyPlacementdouble

<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 平台 上執行。 命名空間 VisualElement.SetAccessKey 中的 Xamarin.Forms.PlatformConfiguration.WindowsSpecific 方法可用來設定 的 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 存取密鑰平臺特定

當使用者啟動存取鍵時,按下 Alt 鍵後接存取鍵,就會執行的預設動作 VisualElement 。 例如,當使用者在 上 Switch啟用存取金鑰時, Switch 會切換 。 當使用者在 上 Entry啟用存取金鑰時,取得 Entry 焦點。 當使用者在 上 Button啟動存取密鑰時,就會執行 事件的事件處理程式 Clicked

警告

根據預設,當模式對話框顯示任何在對話框後方頁面上定義的訪問鍵時,仍可啟動。 不過,您可以撰寫自定義邏輯來停用此案例中的存取密鑰。 這可以藉由處理 Dispatcher.AcceleratorKeyActivated UWP 項目類別中的 MainPage 事件,以及在事件處理程式中,將模式對話框顯示時事件自變數true的 屬性設定Handled為 。

如需存取金鑰的詳細資訊,請參閱 存取金鑰