зеркало из https://github.com/DeGsoft/maui-linux.git
Revert "[UWP] Use ItemClick to re-enable use of enter key for selection on ListView (#1133)"
This reverts commit d1bf93be20
.
This commit is contained in:
Родитель
78b8be17aa
Коммит
783ecfcde0
|
@ -1,57 +0,0 @@
|
||||||
using Xamarin.Forms.CustomAttributes;
|
|
||||||
using Xamarin.Forms.Internals;
|
|
||||||
|
|
||||||
#if UITEST
|
|
||||||
using Xamarin.UITest;
|
|
||||||
using NUnit.Framework;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace Xamarin.Forms.Controls.Issues
|
|
||||||
{
|
|
||||||
[Preserve(AllMembers = true)]
|
|
||||||
[Issue(IssueTracker.Bugzilla, 59248, "[UWP] ItemTapped event is not fired when keyboard Enter Pressed on ListView", PlatformAffected.UWP)]
|
|
||||||
public class Bugzilla59248 : TestContentPage
|
|
||||||
{
|
|
||||||
protected override void Init()
|
|
||||||
{
|
|
||||||
var selectedItem = new Label { Text = "SelectedItem" };
|
|
||||||
var list = new ListView
|
|
||||||
{
|
|
||||||
ItemsSource = new string[] { "A", "B", "C" },
|
|
||||||
ItemTemplate = new DataTemplate(() =>
|
|
||||||
{
|
|
||||||
var view = new ViewCell();
|
|
||||||
view.View = new StackLayout
|
|
||||||
{
|
|
||||||
Children =
|
|
||||||
{
|
|
||||||
new Label { Text = "Label" },
|
|
||||||
new Button { Text = "Click for alert", Command = new Command(() => DisplayAlert("Clicked the button in the listview item", "Ok", "Cancel"))}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return view;
|
|
||||||
})
|
|
||||||
};
|
|
||||||
list.ItemTapped += List_ItemTapped;
|
|
||||||
list.ItemSelected += (s, e) =>
|
|
||||||
{
|
|
||||||
selectedItem.Text = list.SelectedItem == null ? "None" : list.SelectedItem.ToString();
|
|
||||||
};
|
|
||||||
|
|
||||||
Content = new StackLayout
|
|
||||||
{
|
|
||||||
Children =
|
|
||||||
{
|
|
||||||
list,
|
|
||||||
selectedItem
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
private void List_ItemTapped(object sender, ItemTappedEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Item != null)
|
|
||||||
DisplayAlert("Tapped: " + e.Item, "Ok", "Cancel");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -218,7 +218,6 @@
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla57910.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla57910.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla58406.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla58406.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla58833.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla58833.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla59248.cs" />
|
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)ButtonBackgroundColorTest.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)ButtonBackgroundColorTest.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)CarouselAsync.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)CarouselAsync.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla34561.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Bugzilla34561.cs" />
|
||||||
|
|
|
@ -72,8 +72,10 @@ namespace Xamarin.Forms.Platform.WinRT
|
||||||
GroupStyleSelector = (GroupStyleSelector)WApp.Current.Resources["ListViewGroupSelector"]
|
GroupStyleSelector = (GroupStyleSelector)WApp.Current.Resources["ListViewGroupSelector"]
|
||||||
};
|
};
|
||||||
|
|
||||||
List.IsItemClickEnabled = true;
|
// In order to support tapping on elements within a list item, we handle
|
||||||
List.ItemClick += OnListItemClicked;
|
// ListView.Tapped (which can be handled by child elements in the list items
|
||||||
|
// and prevented from bubbling up) rather than ListView.ItemClick
|
||||||
|
List.Tapped += ListOnTapped;
|
||||||
|
|
||||||
List.SelectionChanged += OnControlSelectionChanged;
|
List.SelectionChanged += OnControlSelectionChanged;
|
||||||
|
|
||||||
|
@ -135,7 +137,8 @@ namespace Xamarin.Forms.Platform.WinRT
|
||||||
{
|
{
|
||||||
if (List != null)
|
if (List != null)
|
||||||
{
|
{
|
||||||
List.ItemClick -= OnListItemClicked;
|
List.Tapped -= ListOnTapped;
|
||||||
|
|
||||||
List.SelectionChanged -= OnControlSelectionChanged;
|
List.SelectionChanged -= OnControlSelectionChanged;
|
||||||
|
|
||||||
List.DataContext = null;
|
List.DataContext = null;
|
||||||
|
@ -434,6 +437,32 @@ namespace Xamarin.Forms.Platform.WinRT
|
||||||
List.SelectedIndex = index;
|
List.SelectedIndex = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 OnListItemClicked(int index)
|
void OnListItemClicked(int index)
|
||||||
{
|
{
|
||||||
#if !WINDOWS_UWP
|
#if !WINDOWS_UWP
|
||||||
|
@ -475,12 +504,6 @@ namespace Xamarin.Forms.Platform.WinRT
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnListItemClicked(object sender, ItemClickEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.ClickedItem != null)
|
|
||||||
OnListItemClicked(((WListView)e.OriginalSource).Items.IndexOf(e.ClickedItem));
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnControlSelectionChanged(object sender, SelectionChangedEventArgs e)
|
void OnControlSelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
{
|
{
|
||||||
RestorePreviousSelectedVisual();
|
RestorePreviousSelectedVisual();
|
||||||
|
@ -510,8 +533,13 @@ namespace Xamarin.Forms.Platform.WinRT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// A11y: Tapped event will not be routed when Narrator is active, so we need to handle it here.
|
||||||
|
// Also handles keyboard selection.
|
||||||
|
// Default UWP behavior is that items are selected when you navigate to them via the arrow keys
|
||||||
|
// and deselected with the space bar, so this will remain the same.
|
||||||
if (Element.SelectedItem != List.SelectedItem)
|
if (Element.SelectedItem != List.SelectedItem)
|
||||||
((IElementController)Element).SetValueFromRenderer(ListView.SelectedItemProperty, List.SelectedItem);
|
OnListItemClicked(List.SelectedIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
FrameworkElement FindElement(object cell)
|
FrameworkElement FindElement(object cell)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче