protected override void OnKeyUp(KeyRoutedEventArgs e) { if (SelectionModel != null) { if (e.Key == VirtualKey.Escape) { SelectionModel.ClearSelection(); } else if (e.Key == VirtualKey.Space) { SelectionModel.Select(RepeatedIndex); } else if (!SelectionModel.SingleSelect) { var isShiftPressed = Window.Current.CoreWindow.GetAsyncKeyState(VirtualKey.Shift).HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down); var isCtrlPressed = Window.Current.CoreWindow.GetAsyncKeyState(VirtualKey.Control).HasFlag(Windows.UI.Core.CoreVirtualKeyStates.Down); if (e.Key == VirtualKey.A && isCtrlPressed) { SelectionModel.SelectAll(); } else if (isShiftPressed) { SelectionModel.SelectRangeFromAnchor(RepeatedIndex); } } } base.OnKeyUp(e); }
protected override void OnPointerPressed(PointerRoutedEventArgs e) { if (SelectionModel != null) { if (e.KeyModifiers.HasFlag(VirtualKeyModifiers.Shift) && !SelectionModel.SingleSelect) { if (e.KeyModifiers.HasFlag(VirtualKeyModifiers.Control)) { SelectionModel.DeselectRangeFromAnchor(RepeatedIndex); } else { SelectionModel.SelectRangeFromAnchor(RepeatedIndex); } } else if (e.KeyModifiers.HasFlag(VirtualKeyModifiers.Control)) { if (SelectionModel.IsSelected(RepeatedIndex).Value) { SelectionModel.Deselect(RepeatedIndex); } else { SelectionModel.Select(RepeatedIndex); } } else { SelectionModel.Select(RepeatedIndex); this.Focus(FocusState.Keyboard); } } base.OnPointerPressed(e); }
private void SelectRangeFromAnchor(SelectionModel manager, int groupIndex, int itemIndex, bool select) { Log.Comment("SelectRangeFromAnchor " + groupIndex + "." + itemIndex + " select:" + select.ToString()); if (select) { manager.SelectRangeFromAnchor(groupIndex, itemIndex); } else { manager.DeselectRangeFromAnchor(groupIndex, itemIndex); } }