[UWP] Fix ListView selection issues **Behavior change** (#1157)

* Update 44886 repro

* Add 59718 repro

* [UWP] Don't fire a click when SelectedItem changes programmatically

* Update repro for 59718

* [Core] Add Win ListView Selection mode specific

* [Win] Use ListView SelectionMode specific

* Fix test case

* [Win] ListView sets value once when clicked

* Update docs

* Fix specific methods

* Update docs again
This commit is contained in:
Samantha Houts 2017-10-19 15:17:31 -07:00 коммит произвёл Samantha Houts
Родитель e004fb034c
Коммит a327f471a1
10 изменённых файлов: 85156 добавлений и 14 удалений

Просмотреть файл

@ -71,7 +71,15 @@ namespace Xamarin.Forms.Controls.Issues
void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
{
if (e.SelectedItem == null)
{
return; //ItemSelected is called on deselection, which results in SelectedItem being set to null
}
_vm.Count++;
ListView lst = (ListView)sender;
lst.SelectedItem = null;
}
#if UITEST

Просмотреть файл

@ -0,0 +1,146 @@
using System;
using System.Collections.ObjectModel;
using System.Linq;
using Xamarin.Forms.CustomAttributes;
using Xamarin.Forms.Internals;
using System.Collections.Generic;
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
#if UITEST
using NUnit.Framework;
#endif
namespace Xamarin.Forms.Controls.Issues
{
[Preserve(AllMembers = true)]
[Issue(IssueTracker.Bugzilla, 59718, "Multiple issues with listview and navigation in UWP", PlatformAffected.UWP)]
public class Bugzilla59718 : TestContentPage
{
const string GoBackButtonId = "GoBackButtonId";
const string Target1 = "Label with TapGesture Cricket";
const string Target1b = "Label with TapGesture Cricket Tapped!";
const string Target2 = "Label with no TapGesture Cricket";
const string Target3 = "You came here from Cricket.";
Label _ItemTappedLabel;
Label _LabelTappedLabel;
ListView _list;
class Grouping<K, T> : ObservableCollection<T>
{
public K Key { get; private set; }
public Grouping(K key, IEnumerable<T> items)
{
Key = key;
foreach (var item in items)
this.Items.Add(item);
}
}
protected override void Init()
{
_LabelTappedLabel = new Label { TextColor = Color.Red };
_ItemTappedLabel = new Label { TextColor = Color.Purple };
_list = new ListView
{
IsGroupingEnabled = true,
GroupDisplayBinding = new Binding("Key"),
ItemTemplate = new DataTemplate(() =>
{
var tapLabel = new Label();
tapLabel.SetBinding(Label.TextProperty, ".", stringFormat: "Label with TapGesture {0}");
var tap = new TapGestureRecognizer();
tap.Tapped += (s, e) =>
{
_LabelTappedLabel.Text = $"{tapLabel.Text} Tapped!";
};
tapLabel.GestureRecognizers.Add(tap);
var noTap = new Label();
noTap.SetBinding(Label.TextProperty, ".", stringFormat: "Label with no TapGesture {0}");
var view = new ViewCell { View = new StackLayout { Children = { noTap, tapLabel } } };
return view;
})
};
_list.On<Windows>().SetSelectionMode(ListViewSelectionMode.Inaccessible);
_list.ItemTapped += ListView_ItemTapped;
Content = new StackLayout { Children = { _LabelTappedLabel, _ItemTappedLabel, _list } };
}
protected override void OnAppearing()
{
_list.ItemsSource = new ObservableCollection<Grouping<string, string>>
{
new Grouping<string, string>("Sports", new string[] {"Cricket", "Football" }),
new Grouping<string, string>("Mobile", new string[] {"Samsung", "Apple" }),
new Grouping<string, string>("Microsoft", new string[] {"Office", "Windows" }),
new Grouping<string, string>("Games", new string[] {"Online", "Offline" }),
new Grouping<string, string>("Test", new string[] {"test1", "test2" }),
new Grouping<string, string>("Variable", new string[] {"String", "Int" }),
}; ;
base.OnAppearing();
}
async void ListView_ItemTapped(object sender, ItemTappedEventArgs e)
{
_ItemTappedLabel.Text = $"{e.Item}";
await Navigation.PushAsync(new NextPage(_ItemTappedLabel.Text));
((ListView)sender).SelectedItem = null;
}
class NextPage : ContentPage
{
public NextPage(string source)
{
var button = new Button { Text = "Go back", AutomationId = GoBackButtonId };
button.Clicked += Button_Clicked;
Content = new StackLayout
{
Children = {
new Label { Text = $"You came here from {source}." },
button
}
};
}
async void Button_Clicked(object sender, System.EventArgs e)
{
await Navigation.PopAsync();
}
}
#if UITEST
[Test]
public void Bugzilla59718Test()
{
RunningApp.WaitForElement(q => q.Marked(Target1));
RunningApp.Tap(q => q.Marked(Target1));
RunningApp.WaitForElement(q => q.Marked(Target1b));
RunningApp.WaitForElement(q => q.Marked(Target2));
RunningApp.Tap(q => q.Marked(Target2));
RunningApp.WaitForElement(q => q.Marked(Target3));
RunningApp.WaitForElement(q => q.Marked(GoBackButtonId));
RunningApp.Tap(q => q.Marked(GoBackButtonId));
RunningApp.WaitForElement(q => q.Marked(Target1));
}
#endif
}
}

Просмотреть файл

@ -332,6 +332,7 @@
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla27731.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla59097.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla58875.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla59718.cs" />
<Compile Include="$(MSBuildThisFileDirectory)_Template.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla42620.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Issue1028.cs" />

Просмотреть файл

@ -0,0 +1,51 @@
using System;
namespace Xamarin.Forms.PlatformConfiguration.WindowsSpecific
{
using FormsElement = Forms.ListView;
public static class ListView
{
#region SelectionMode
public static readonly BindableProperty SelectionModeProperty =
BindableProperty.CreateAttached("SelectionMode", typeof(ListViewSelectionMode),
typeof(ListView), ListViewSelectionMode.Accessible);
public static ListViewSelectionMode GetSelectionMode(BindableObject element)
{
return (ListViewSelectionMode)element.GetValue(SelectionModeProperty);
}
public static void SetSelectionMode(BindableObject element, ListViewSelectionMode value)
{
element.SetValue(SelectionModeProperty, value);
}
public static ListViewSelectionMode GetSelectionMode(this IPlatformElementConfiguration<Windows, FormsElement> config)
{
return (ListViewSelectionMode)config.Element.GetValue(SelectionModeProperty);
}
public static IPlatformElementConfiguration<Windows, FormsElement> SetSelectionMode(
this IPlatformElementConfiguration<Windows, FormsElement> config, ListViewSelectionMode value)
{
config.Element.SetValue(SelectionModeProperty, value);
return config;
}
#endregion
}
public enum ListViewSelectionMode
{
/// <summary>
/// Allows ListItems to have TapGestures. The Enter key and Narrator will not fire the ItemTapped event.
/// </summary>
Inaccessible,
/// <summary>
/// Allows the Enter key and Narrator to fire the ItemTapped event. ListItems cannot have TapGestures.
/// </summary>
Accessible
}
}

Просмотреть файл

@ -113,6 +113,7 @@
<Compile Include="PlatformConfiguration\iOSSpecific\UIStatusBarAnimation.cs" />
<Compile Include="PlatformConfiguration\iOSSpecific\UpdateMode.cs" />
<Compile Include="PlatformConfiguration\iOSSpecific\VisualElement.cs" />
<Compile Include="PlatformConfiguration\WindowsSpecific\ListView.cs" />
<Compile Include="PlatformConfiguration\WindowsSpecific\MasterDetailPage.cs" />
<Compile Include="PlatformConfiguration\WindowsSpecific\CollapseStyle.cs" />
<Compile Include="Configuration.cs" />

Просмотреть файл

@ -14,6 +14,8 @@ using WListView = Windows.UI.Xaml.Controls.ListView;
using WBinding = Windows.UI.Xaml.Data.Binding;
using WApp = Windows.UI.Xaml.Application;
using Xamarin.Forms.Internals;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
using Specifics = Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListView;
#if WINDOWS_UWP
@ -26,6 +28,9 @@ namespace Xamarin.Forms.Platform.WinRT
public class ListViewRenderer : ViewRenderer<ListView, FrameworkElement>
{
ITemplatedItemsView<Cell> TemplatedItemsView => Element;
bool _itemWasClicked;
bool _subscribedToItemClick;
bool _subscribedToTapped;
#if !WINDOWS_UWP
@ -72,9 +77,6 @@ namespace Xamarin.Forms.Platform.WinRT
GroupStyleSelector = (GroupStyleSelector)WApp.Current.Resources["ListViewGroupSelector"]
};
List.IsItemClickEnabled = true;
List.ItemClick += OnListItemClicked;
List.SelectionChanged += OnControlSelectionChanged;
List.SetBinding(ItemsControl.ItemsSourceProperty, "");
@ -92,6 +94,7 @@ namespace Xamarin.Forms.Platform.WinRT
UpdateGrouping();
UpdateHeader();
UpdateFooter();
UpdateSelectionMode();
ClearSizeEstimate();
}
}
@ -129,13 +132,26 @@ namespace Xamarin.Forms.Platform.WinRT
ClearSizeEstimate();
((CollectionViewSource)List.DataContext).Source = Element.ItemsSource;
}
else if (e.PropertyName == Specifics.SelectionModeProperty.PropertyName)
{
UpdateSelectionMode();
}
}
protected override void Dispose(bool disposing)
{
if (List != null)
{
List.ItemClick -= OnListItemClicked;
if (_subscribedToTapped)
{
_subscribedToTapped = false;
List.Tapped -= ListOnTapped;
}
if (_subscribedToItemClick)
{
_subscribedToItemClick = false;
List.ItemClick -= OnListItemClicked;
}
List.SelectionChanged -= OnControlSelectionChanged;
List.DataContext = null;
@ -246,6 +262,44 @@ namespace Xamarin.Forms.Platform.WinRT
}
}
void UpdateSelectionMode()
{
if (Element.OnThisPlatform().GetSelectionMode() == PlatformConfiguration.WindowsSpecific.ListViewSelectionMode.Accessible)
{
// Using Tapped will disable the ability to use the Enter key
List.IsItemClickEnabled = true;
if (!_subscribedToItemClick)
{
_subscribedToItemClick = true;
List.ItemClick += OnListItemClicked;
}
if (_subscribedToTapped)
{
_subscribedToTapped = false;
List.Tapped -= ListOnTapped;
}
}
else
{
// In order to support tapping on elements within a list item, we handle
// ListView.Tapped (which can be handled by child elements in the list items
// and prevented from bubbling up) rather than ListView.ItemClick
if (!_subscribedToTapped)
{
_subscribedToTapped = true;
List.Tapped += ListOnTapped;
}
List.IsItemClickEnabled = false;
if (_subscribedToItemClick)
{
_subscribedToItemClick = false;
List.ItemClick -= OnListItemClicked;
}
}
}
async void OnViewChangeCompleted(object sender, SemanticZoomViewChangedEventArgs e)
{
if (e.IsSourceZoomedInView)
@ -399,6 +453,32 @@ namespace Xamarin.Forms.Platform.WinRT
return _scrollViewer;
}
void ListOnTapped(object sender, TappedRoutedEventArgs args)
{
var orig = args.OriginalSource as DependencyObject;
int index = -1;
// Work our way up the tree until we find the actual list item
// the user tapped on
while (orig != null && orig != List)
{
var lv = orig as ListViewItem;
if (lv != null)
{
index = TemplatedItemsView.TemplatedItems.GetGlobalIndexOfItem(lv.Content);
break;
}
orig = VisualTreeHelper.GetParent(orig);
}
if (index > -1)
{
OnListItemClicked(index);
}
}
void OnElementItemSelected(object sender, SelectedItemChangedEventArgs e)
{
if (Element == null)
@ -451,6 +531,7 @@ namespace Xamarin.Forms.Platform.WinRT
#endif
Element.NotifyRowTapped(index, cell: null);
_itemWasClicked = true;
#if !WINDOWS_UWP
@ -483,6 +564,7 @@ namespace Xamarin.Forms.Platform.WinRT
void OnControlSelectionChanged(object sender, SelectionChangedEventArgs e)
{
#if !WINDOWS_UWP
RestorePreviousSelectedVisual();
if (e.AddedItems.Count == 0)
@ -500,7 +582,6 @@ namespace Xamarin.Forms.Platform.WinRT
if (cell == null)
return;
#if !WINDOWS_UWP
if (Device.Idiom == TargetIdiom.Phone)
{
FrameworkElement element = FindElement(cell);
@ -510,8 +591,10 @@ namespace Xamarin.Forms.Platform.WinRT
}
}
#endif
if (Element.SelectedItem != List.SelectedItem)
if (Element.SelectedItem != List.SelectedItem && !_itemWasClicked)
((IElementController)Element).SetValueFromRenderer(ListView.SelectedItemProperty, List.SelectedItem);
_itemWasClicked = false;
}
FrameworkElement FindElement(object cell)
@ -525,15 +608,8 @@ namespace Xamarin.Forms.Platform.WinRT
return null;
}
#if WINDOWS_UWP
void RestorePreviousSelectedVisual()
{
}
#if !WINDOWS_UWP
void SetSelectedVisual(FrameworkElement element)
{
}
#else
void RestorePreviousSelectedVisual()
{
foreach (BrushedElement highlight in _highlightedElements)

84652
_docs.xml Normal file

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,116 @@
<Type Name="ListView" FullName="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListView">
<TypeSignature Language="C#" Value="public static class ListView" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit ListView extends System.Object" />
<AssemblyInfo>
<AssemblyName>Xamarin.Forms.Core</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Object</BaseTypeName>
</Base>
<Interfaces />
<Docs>
<summary>To be added.</summary>
<remarks>To be added.</remarks>
</Docs>
<Members>
<Member MemberName="GetSelectionMode">
<MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode GetSelectionMode (Xamarin.Forms.BindableObject element);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode GetSelectionMode(class Xamarin.Forms.BindableObject element) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="element" Type="Xamarin.Forms.BindableObject" />
</Parameters>
<Docs>
<param name="element">To be added.</param>
<summary>To be added.</summary>
<returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="GetSelectionMode">
<MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode GetSelectionMode (this Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt; config);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode GetSelectionMode(class Xamarin.Forms.IPlatformElementConfiguration`2&lt;class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.ListView&gt; config) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt;" RefType="this" />
</Parameters>
<Docs>
<param name="config">To be added.</param>
<summary>To be added.</summary>
<returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="SelectionModeProperty">
<MemberSignature Language="C#" Value="public static readonly Xamarin.Forms.BindableProperty SelectionModeProperty;" />
<MemberSignature Language="ILAsm" Value=".field public static initonly class Xamarin.Forms.BindableProperty SelectionModeProperty" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Xamarin.Forms.BindableProperty</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="SetSelectionMode">
<MemberSignature Language="C#" Value="public static void SetSelectionMode (Xamarin.Forms.BindableObject element, Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode value);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig void SetSelectionMode(class Xamarin.Forms.BindableObject element, valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode value) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="element" Type="Xamarin.Forms.BindableObject" />
<Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode" />
</Parameters>
<Docs>
<param name="element">To be added.</param>
<param name="value">To be added.</param>
<summary>To be added.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="SetSelectionMode">
<MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt; SetSelectionMode (this Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt; config, Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode value);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2&lt;class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.ListView&gt; SetSelectionMode(class Xamarin.Forms.IPlatformElementConfiguration`2&lt;class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.ListView&gt; config, valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode value) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt;</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt;" RefType="this" />
<Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode" />
</Parameters>
<Docs>
<param name="config">To be added.</param>
<param name="value">To be added.</param>
<summary>To be added.</summary>
<returns>To be added.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
</Members>
</Type>

Просмотреть файл

@ -0,0 +1,45 @@
<Type Name="ListViewSelectionMode" FullName="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode">
<TypeSignature Language="C#" Value="public enum ListViewSelectionMode" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi sealed ListViewSelectionMode extends System.Enum" />
<AssemblyInfo>
<AssemblyName>Xamarin.Forms.Core</AssemblyName>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Enum</BaseTypeName>
</Base>
<Docs>
<summary>To be added.</summary>
<remarks>To be added.</remarks>
</Docs>
<Members>
<Member MemberName="Accessible">
<MemberSignature Language="C#" Value="Accessible" />
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode Accessible = int32(1)" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
</Docs>
</Member>
<Member MemberName="Inaccessible">
<MemberSignature Language="C#" Value="Inaccessible" />
<MemberSignature Language="ILAsm" Value=".field public static literal valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode Inaccessible = int32(0)" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>2.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode</ReturnType>
</ReturnValue>
<Docs>
<summary>To be added.</summary>
</Docs>
</Member>
</Members>
</Type>

Просмотреть файл

@ -536,6 +536,8 @@
</Namespace>
<Namespace Name="Xamarin.Forms.PlatformConfiguration.WindowsSpecific">
<Type Name="CollapseStyle" Kind="Enumeration" />
<Type Name="ListView" Kind="Class" />
<Type Name="ListViewSelectionMode" Kind="Enumeration" />
<Type Name="MasterDetailPage" Kind="Class" />
<Type Name="Page" Kind="Class" />
<Type Name="ToolbarPlacement" Kind="Enumeration" />
@ -2653,6 +2655,50 @@
<Link Type="Xamarin.Forms.PlatformConfiguration.macOSSpecific.TabbedPage" Member="M:Xamarin.Forms.PlatformConfiguration.macOSSpecific.TabbedPage.ShowTabsOnNavigation(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.macOS,Xamarin.Forms.TabbedPage})" />
</Member>
</ExtensionMethod>
<ExtensionMethod>
<Targets>
<Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" />
</Targets>
<Member MemberName="GetSelectionMode">
<MemberSignature Language="C#" Value="public static Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode GetSelectionMode (this Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt; config);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode GetSelectionMode(class Xamarin.Forms.IPlatformElementConfiguration`2&lt;class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.ListView&gt; config) cil managed" />
<MemberType>ExtensionMethod</MemberType>
<ReturnValue>
<ReturnType>Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt;" RefType="this" />
</Parameters>
<Docs>
<param name="config">To be added.</param>
<summary>To be added.</summary>
</Docs>
<Link Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListView" Member="M:Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListView.GetSelectionMode(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView})" />
</Member>
</ExtensionMethod>
<ExtensionMethod>
<Targets>
<Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" />
</Targets>
<Member MemberName="SetSelectionMode">
<MemberSignature Language="C#" Value="public static Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt; SetSelectionMode (this Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt; config, Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode value);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig class Xamarin.Forms.IPlatformElementConfiguration`2&lt;class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.ListView&gt; SetSelectionMode(class Xamarin.Forms.IPlatformElementConfiguration`2&lt;class Xamarin.Forms.PlatformConfiguration.Windows, class Xamarin.Forms.ListView&gt; config, valuetype Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode value) cil managed" />
<MemberType>ExtensionMethod</MemberType>
<ReturnValue>
<ReturnType>Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt;</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="config" Type="Xamarin.Forms.IPlatformElementConfiguration&lt;Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView&gt;" RefType="this" />
<Parameter Name="value" Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode" />
</Parameters>
<Docs>
<param name="config">To be added.</param>
<param name="value">To be added.</param>
<summary>To be added.</summary>
</Docs>
<Link Type="Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListView" Member="M:Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListView.SetSelectionMode(Xamarin.Forms.IPlatformElementConfiguration{Xamarin.Forms.PlatformConfiguration.Windows,Xamarin.Forms.ListView},Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ListViewSelectionMode)" />
</Member>
</ExtensionMethod>
<ExtensionMethod>
<Targets>
<Target Type="T:Xamarin.Forms.IPlatformElementConfiguration`2" />