次の方法で共有


Windows の ListView SelectionMode

ユニバーサル Windows プラットフォームでは、既定では Xamarin.FormsListView はネイティブ Tapped イベントではなく、ネイティブ ItemClick イベントを使用してやりとりに応答します。 これにより、Windows ナレーターとキーボードが ListView を操作できるアクセシビリティ機能が提供されます。 ただし、ListView 内では操作不能なタップ ジェスチャもレンダリングされます。

このユニバーサル Windows プラットフォームのプラットフォーム固有設定により、ListView 内の項目がタップ ジェスチャに応答できるかどうか、したがってネイティブ ListViewItemClick または Tapped イベントを発生させるかどうかを制御します。 ListView.SelectionMode 添付プロパティを ListViewSelectionMode 列挙型の値に設定することで、XAML で使用されます。

<ContentPage ...
             xmlns:windows="clr-namespace:Xamarin.Forms.PlatformConfiguration.WindowsSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout>
        <ListView ... windows:ListView.SelectionMode="Inaccessible">
            ...
        </ListView>
    </StackLayout>
</ContentPage>

あるいは、Fluent API を使用して C# から使用することもできます。

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
...

listView.On<Windows>().SetSelectionMode(ListViewSelectionMode.Inaccessible);

ListView.On<Windows> メソッドでは、このプラットフォーム固有設定がユニバーサル Windows プラットフォームでのみ実行されるように指定します。 ListView.SetSelectionMode メソッドは Xamarin.Forms.PlatformConfiguration.WindowsSpecific 名前空間で、2つの可能な値を提供する ListViewSelectionMode 列挙型を使用して ListView の項目がタップ ジェスチャに応答するかどうかを制御するために使われます。

  • Accessible は、ListView がネイティブ ItemClick イベントを発生させて対話を処理し、アクセシビリティ機能を提供することを示します。 これにより、Windows ナレーターとキーボードは ListView を操作できるようになります。 ただし、ListView にはタップ ジェスチャに応答できない項目があります。 これは、ユニバーサル Windows プラットフォーム上の ListView インスタンスの既定の動作です。
  • Inaccessible は、ListView がネイティブ Tapped イベントを発生させて対話を処理することを示します。 このため、ListView の項目は、タップ ジェスチャに応答できます。 ただし、アクセシビリティ機能はないため、Windows ナレーターとキーボードは ListView を操作できません。

Accessible および Inaccessible 選択モードは相互に排他的であり、アクセス可能な ListView、またはタップ ジェスチャに応答できる ListView を選択する必要があります。

さらに、GetSelectionMode メソッドを使用して現在の ListViewSelectionMode を返すことができます。

その結果、指定された ListViewSelectionModeListView に適用され、ListView の項目がタップ ジェスチャに応答できるかどうか、およびネイティブ ListViewItemClick または Tapped イベントを発生させるかどうかを制御します。