Windows の ListView SelectionMode
ユニバーサル Windows プラットフォームでは、既定では Xamarin.FormsListView
はネイティブ Tapped
イベントではなく、ネイティブ ItemClick
イベントを使用してやりとりに応答します。 これにより、Windows ナレーターとキーボードが ListView
を操作できるアクセシビリティ機能が提供されます。 ただし、ListView
内では操作不能なタップ ジェスチャもレンダリングされます。
このユニバーサル Windows プラットフォームのプラットフォーム固有設定により、ListView
内の項目がタップ ジェスチャに応答できるかどうか、したがってネイティブ ListView
が ItemClick
または 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
を返すことができます。
その結果、指定された ListViewSelectionMode
が ListView
に適用され、ListView
の項目がタップ ジェスチャに応答できるかどうか、およびネイティブ ListView
が ItemClick
または Tapped
イベントを発生させるかどうかを制御します。