Windows 上的 ListView SelectionMode
在通用 Windows 平台上,默认情况下,Xamarin.FormsListView
使用原生 ItemClick
事件来响应交互,而不是使用原生 Tapped
事件。 这提供了辅助功能,以便 Windows 讲述人和键盘可以与 ListView
交互。 但是,它也会使 ListView
内的任何点击手势都无法操作。
此特定于通用 Windows 平台的平台特定功能控制 ListView
中的项是否可以响应点击手势,以及原生 ListView
因此触发 ItemClick
事件还是 Tapped
事件。 其使用方式为,在 XAML 中将 ListView.SelectionMode
附加属性设置为 ListViewSelectionMode
枚举的值:
<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 平台上运行。 Xamarin.Forms.PlatformConfiguration.WindowsSpecific
命名空间中的 ListView.SetSelectionMode
方法用于控制 ListView
中的项是否可以响应点击手势,ListViewSelectionMode
枚举提供两个可能的值:
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
事件。