ListView SelectionMode on Windows
On Windows, by default the .NET Multi-platform App UI (.NET MAUI) ListView uses the native ItemClick
event to respond to interaction, rather than the native Tapped
event. This provides accessibility functionality so that the Windows Narrator and the keyboard can interact with the ListView. However, it also renders any tap gestures inside the ListView inoperable.
This .NET MAUI Windows platform-specific controls whether items in a ListView can respond to tap gestures, and hence whether the native ListView fires the ItemClick
or Tapped
event. It's consumed in XAML by setting the ListView.SelectionMode
attached property to a value of the ListViewSelectionMode
enumeration:
<ContentPage ...
xmlns:windows="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific;assembly=Microsoft.Maui.Controls">
<StackLayout>
<ListView ... windows:ListView.SelectionMode="Inaccessible">
...
</ListView>
</StackLayout>
</ContentPage>
Alternatively, it can be consumed from C# using the fluent API:
using Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific;
...
listView.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows>().SetSelectionMode(ListViewSelectionMode.Inaccessible);
The ListView.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows>
method specifies that this platform-specific will only run on Windows. The ListView.SetSelectionMode
method, in the Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific
namespace, is used to control whether items in a ListView can respond to tap gestures, with the ListViewSelectionMode
enumeration providing two possible values:
Accessible
– indicates that the ListView will fire the nativeItemClick
event to handle interaction, and hence provide accessibility functionality. Therefore, the Windows Narrator and the keyboard can interact with the ListView. However, items in the ListView can't respond to tap gestures. This is the default behavior for ListView objects on Windows.Inaccessible
– indicates that the ListView will fire the nativeTapped
event to handle interaction. Therefore, items in the ListView can respond to tap gestures. However, there's no accessibility functionality and hence the Windows Narrator and the keyboard can't interact with the ListView.
Note
The Accessible
and Inaccessible
selection modes are mutually exclusive, and you will need to choose between an accessible ListView or a ListView that can respond to tap gestures.
In addition, the GetSelectionMode
method can be used to return the current ListViewSelectionMode
.
The result is that a specified ListViewSelectionMode
is applied to the ListView, which controls whether items in the ListView can respond to tap gestures, and hence whether the native ListView fires the ItemClick
or Tapped
event.