示例#1
0
 private void HandleMouseUp(MouseButton mouseButton)
 {
     if (m_isPressed && SelectorHelper.UiGetIsSelectable(this) && Focus())
     {
         ParentListView?.NotifyListItemClicked(this, mouseButton);
     }
 }
示例#2
0
        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;
                }
            }
        }
示例#3
0
        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();
        }