次の方法で共有


Windows 上の VisualElement アクセス キー

アクセス キーは、ユニバーサル Windows プラットフォーム (UWP) 上のアプリの使いやすさとアクセシビリティを向上させるキーボード ショートカットです。これにより、ユーザーはタッチやマウスを使う代わりに、直感的な方法でキーボードを使用してアプリの表示 UI をすばやく操作したり操作したりできます。 Alt キーと 1 つ以上の英数字キーを組み合わせたもので、通常は順番に押されます。 1 つの英数字を使用するアクセス キーでは、キーボード ショートカットが自動的にサポートされます。

アクセス キーのヒントは、アクセス キーを含むコントロールの横に表示されるフローティング バッジに示されます。 各アクセス キーのヒントには、関連のあるコントロールをアクティブにする英数字キーが含まれています。 ユーザーが Alt キーを押すと、アクセス キーのヒントが表示されます。

この UWP プラットフォーム固有は、VisualElement のアクセスキーを指定するために使用されます。 これは、XAML で英数字の値への VisualElement.AccessKey 添付プロパティを設定し、オプションで AccessKeyPlacement 列挙型の値への VisualElement.AccessKeyPlacement 添付プロパティ、doubleへの VisualElement.AccessKeyHorizontalOffset 添付プロパティ、double へのVisualElement.AccessKeyVerticalOffset 添付プロパティを設定して使用されます:

<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設定されている場合、アクセス キーのヒントのオフセットを設定することはできません。

さらに、GetAccessKeyGetAccessKeyPlacementGetAccessKeyHorizontalOffsetGetAccessKeyVerticalOffset メソッドを使用して、アクセス キーの値とその場所を取得することもできます。

その結果、Alt キーを押すと、アクセス キーを定義する VisualElement インスタンスの横にアクセス キーのヒントが表示されます。

VisualElement アクセス キー プラットフォーム固有

ユーザーがアクセス キーをアクティブにすると、Alt キーを押してからアクセス キーを押すと、VisualElement のデフォルトのアクションが実行されます。 たとえば、ユーザーが Switch でアクセス キーをアクティブにすると、Switch を切り替えられます。 ユーザーが Entry でアクセス キーをアクティブにすると、Entry に焦点が当てられます。 ユーザーが Button でアクセス キーをアクティブにすると、Clicked イベントのイベント ハンドラーが実行されます。

警告

既定では、モーダル ダイアログが表示されている場合、ダイアログの背後にあるページで定義されているアクセス キーをアクティブ化できます。 ただし、このシナリオでは、アクセス キーを無効にするためにカスタム ロジックを記述できます。 これを実現するには、UWP プロジェクトの MainPage クラスで Dispatcher.AcceleratorKeyActivated イベントを処理し、イベント ハンドラーで、モーダル ダイアログが表示されたときにイベント引数の Handled プロパティを true に設定します。

アクセス キーの詳細については、「アクセス キー」を参照してください。