private static bool SetMousePosition(object sender, FrameworkElement attachedToEl) { FrameworkElement draggedEl = (FrameworkElement)sender; FrameworkElement containerEl = GetContainerElement(attachedToEl); Point mousePositionWithRespectToContainerElement = Mouse.GetPosition(containerEl); SetMousePositionWithinContainerElement ( attachedToEl, mousePositionWithRespectToContainerElement); bool isDragAbove = containerEl.Contains(mousePositionWithRespectToContainerElement); SetIsDragAbove(attachedToEl, isDragAbove); bool result = SetWhetherCanDrop(draggedEl, attachedToEl, mousePositionWithRespectToContainerElement); if (result) { IDropPositionChooser dropPositonChooser = GetTheDropPositionChooser(attachedToEl); if (dropPositonChooser != null) { Point dropPoint = dropPositonChooser.GetPositionWithinDropDontainer ( draggedEl, containerEl, mousePositionWithRespectToContainerElement); SetDropPosition(attachedToEl, dropPoint); } } return(result); }
public static void SetTheDropPositionChooser(DependencyObject obj, IDropPositionChooser value) { obj.SetValue(TheDropPositionChooserProperty, value); }