summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs')
-rw-r--r--Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs28
1 files changed, 15 insertions, 13 deletions
diff --git a/Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs b/Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs
index 031e2cf3..db581d52 100644
--- a/Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs
+++ b/Xamarin.Forms.Platform.WinRT/ListViewRenderer.cs
@@ -77,6 +77,9 @@ namespace Xamarin.Forms.Platform.WinRT
// and prevented from bubbling up) rather than ListView.ItemClick
List.Tapped += ListOnTapped;
+ // We also want to watch for the Enter key being pressed for selection
+ List.KeyUp += OnKeyPressed;
+
List.SelectionChanged += OnControlSelectionChanged;
List.SetBinding(ItemsControl.ItemsSourceProperty, "");
@@ -138,6 +141,7 @@ namespace Xamarin.Forms.Platform.WinRT
if (List != null)
{
List.Tapped -= ListOnTapped;
+ List.KeyUp -= OnKeyPressed;
List.SelectionChanged -= OnControlSelectionChanged;
@@ -504,6 +508,17 @@ namespace Xamarin.Forms.Platform.WinRT
#endif
}
+ void OnKeyPressed(object sender, KeyRoutedEventArgs e)
+ {
+ if (e.Key == VirtualKey.Enter)
+ {
+ if (Element.SelectedItem != null && Element.SelectedItem != List.SelectedItem)
+ {
+ ((IElementController)Element).SetValueFromRenderer(ListView.SelectedItemProperty, List.SelectedItem);
+ }
+ }
+ }
+
void OnControlSelectionChanged(object sender, SelectionChangedEventArgs e)
{
RestorePreviousSelectedVisual();
@@ -525,10 +540,6 @@ namespace Xamarin.Forms.Platform.WinRT
}
}
#endif
-
- // A11y: Tapped event will not be routed when Narrator is active
- // Also handles keyboard selection
- SelectElementItem();
}
FrameworkElement FindElement(object cell)
@@ -542,15 +553,6 @@ namespace Xamarin.Forms.Platform.WinRT
return null;
}
- void SelectElementItem()
- {
- if (List.SelectedItem != null && Element.SelectedItem != List.SelectedItem)
- {
- ((IElementController)Element).SetValueFromRenderer(ListView.SelectedItemProperty, List?.SelectedItem);
- OnElementItemSelected(null, new SelectedItemChangedEventArgs(Element?.SelectedItem));
- }
- }
-
#if WINDOWS_UWP
void RestorePreviousSelectedVisual()
{