Windows 上的 ListView SelectionMode

在 Windows 上,默认情况下,.NET Multi-platform App UI (.NET MAUI) ListView 使用本机 ItemClick 事件来响应交互,而不是使用本机 Tapped 事件。 这提供了辅助功能,以便 Windows 讲述人和键盘可以与 ListView 交互。 但是,它也会使 ListView 内的任何点击手势都无法操作。

此 .NET MAUI Windows 平台特定内容控制 ListView 中的项是否可以响应点击手势,从而控制本机 ListView 是触发 ItemClick 事件还是触发 Tapped 事件。 通过将 ListView.SelectionMode 附加属性设置为 ListViewSelectionMode 枚举的值以在 XAML 中使用它:

<ContentPage ...
             xmlns:windows="clr-namespace:Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific;assembly=Microsoft.Maui.Controls">
    <StackLayout>
        <ListView ... windows:ListView.SelectionMode="Inaccessible">
            ...
        </ListView>
    </StackLayout>
</ContentPage>

或者,可以使用 Fluent API 在 C# 中使用它:

using Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific;
...

listView.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows>().SetSelectionMode(ListViewSelectionMode.Inaccessible);

ListView.On<Microsoft.Maui.Controls.PlatformConfiguration.Windows> 方法指定此平台特定内容仅在 Windows 上运行。 Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific 命名空间中的 ListView.SetSelectionMode 方法用于控制 ListView 中的项是否可以响应点击手势,ListViewSelectionMode 枚举提供两个可能的值:

  • Accessible – 指示 ListView 将触发本机 ItemClick 事件来处理交互,从而提供辅助功能。 因此,Windows 讲述人和键盘可以与 ListView 交互。 但是,ListView 中的项无法响应点击手势。 这是 Windows 上 ListView 对象的默认行为。
  • Inaccessible – 指示 ListView 将触发本机 Tapped 事件来处理交互。 因此,ListView 中的项能够响应点击手势。 但是,没有辅助功能,因此 Windows 讲述人和键盘无法与 ListView 交互。

注意

AccessibleInaccessible 选择模式是互相排斥的,你需要在可访问的 ListView 或可以响应点击手势的 ListView 之间进行选择。

此外,GetSelectionMode 方法还可用于返回当前的 ListViewSelectionMode

结果是指定的 ListViewSelectionMode 应用于 ListView,这会控制 ListView 中的项是否可以响应点击手势,从而控制本机 ListView 是触发 ItemClick 事件还是 Tapped 事件。