private void UpdateDropArea(ListBoxItem item, DragEventArgs e)
        {
            var itemContent = item.FindChild <Grid>(ItemContentContainer);

            double mousePointY = e.GetPosition(itemContent).Y;
            double itemCenter  = itemContent.ActualHeight / 2;

            var activeDropArea =
                item.FindChild <Rectangle>(mousePointY <= itemCenter ? DropAreaTopName : DropAreaBottomName);

            if (!Equals(dropAreaOpen, activeDropArea))
            {
                dropAreaOpen.Visibility   = Visibility.Collapsed;
                activeDropArea.Visibility = Visibility.Visible;

                dropAreaOpen = activeDropArea;
            }

            //else if (!Equals(dropAreaOpen, activeDropArea))
            //{
            //    dropAreaOpen.Visibility = Visibility.Collapsed;
            //    activeDropArea.Visibility = Visibility.Visible;

            //    dropAreaOpen = activeDropArea;
            //}
        }
        private void OpenDropArea(ListBoxItem item, DragEventArgs e)
        {
            var itemContent = item.FindChild <Grid>(ItemContentContainer);

            double mousePointY = e.GetPosition(itemContent).Y;
            double itemCenter  = itemContent.ActualHeight / 2;

            // set active drop area
            var activeDropArea =
                item.FindChild <Rectangle>(mousePointY <= itemCenter ? DropAreaTopName : DropAreaBottomName);

            if (dropAreaOpen != null)
            {
                dropAreaOpen.Visibility = Visibility.Collapsed;
            }
            activeDropArea.Visibility = Visibility.Visible;
            dropAreaOpen = activeDropArea;
        }
        private void InitializeDragAdorner(Point startPosition)
        {
            if (adorner != null)
            {
                return;
            }
            if (draggedItem == null)
            {
                return;
            }
            var contentContainer = draggedItem.FindChild <Grid>(ItemContentContainer);

            adorner = new DragAdorner(AssociatedObject, contentContainer, true, 1);
            var adornerLayer = AdornerLayer.GetAdornerLayer(AssociatedObject);

            adornerLayer.Add(adorner);
            adorner.UpdatePosition(startPosition);
        }
Beispiel #4
0
        private static ListBoxItem GetLastDeepestChild(ListBoxItem listBoxItem)
        {
            ListBox box = listBoxItem.FindChild <ListBox>();

            if (box == null)
            {
                return(listBoxItem);
            }

            if (box.Items.Count == 0)
            {
                return(listBoxItem);
            }

            var lastItem =
                (ListBoxItem)box.ItemContainerGenerator.ContainerFromItem(box.Items[box.Items.Count - 1]);

            return(GetLastDeepestChild(lastItem));
        }