private void HandleMouseUp(MouseButton mouseButton) { if (m_isPressed && SelectorHelper.UiGetIsSelectable(this) && Focus()) { ParentListView?.NotifyListItemClicked(this, mouseButton); } }
protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); if (e.Key == Key.Enter) { if (SelectorHelper.UiGetIsSelectable(this) && Focus()) { ParentListView?.NotifyListItemClicked(this); e.Handled = true; } } }
private void OnDragOver(object sender, DragEventArgs e) { //Debug.WriteLine("OnDragOver. IsReordering: {0}", isReordering); if (!isReordering || draggingItemIndex_original == -1) { return; } e.Handled = true; //Get the list of items under the current position var position = e.GetPosition(null); var hitContainer = VisualTreeHelper .FindElementsInHostCoordinates(position, this, false) .OfType <SelectorItem>() .Where(x => x != Children[draggingItemIndex_original]) .FirstOrDefault(); int newDropAtIndex = (hitContainer == null) ? -1 : ParentListView.IndexFromContainer(hitContainer);//elements.IndexOf(hitContainers[0]); if (newDropAtIndex == draggingItemIndex_original) { return; } //prevent mess: disable reorder on same position (prevent infinite reordering) if (lastDragOverPosition != null) { hitContainer = VisualTreeHelper .FindElementsInHostCoordinates((Point)lastDragOverPosition, this, false) .OfType <SelectorItem>() .Where(x => x != Children[draggingItemIndex_original]) .FirstOrDefault(); var index = (hitContainer == null) ? -1 : ParentListView.IndexFromContainer(hitContainer); if (index == newDropAtIndex) { return; } lastDragOverPosition = null; } if (newDropAtIndex < 0) { return; } lastDragOverPosition = position; dropAtIndex_elements = elements.IndexOf(Children[newDropAtIndex]); //Debug.WriteLine("OnDragOver. Drag: {0}, Drop: {1}, OldDrop: {2}", draggingItemIndex_original, dropAtIndex_elements, dropAtIndex_original); dropAtIndex_original = newDropAtIndex; #if WINDOWS_UWP e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Move; #endif InvalidateMeasure(); }