void AssociatedObject_DragOver(object sender, DragEventArgs e) { var update = false; var isAboveElement = false; UIElement droppedOverItem = null; try { e.Handled = true; if (_dataType == null) { return; } if (!e.Data.GetDataPresent(_dataType)) { return; } SetDragDropEffects(e); if (_insertAdornerManager == null) { return; } var dropContainer = sender as DataGrid; if (dropContainer == null) { return; } droppedOverItem = UIHelper.GetUIElement(dropContainer, e.GetPosition(dropContainer)); if (droppedOverItem == null) { return; } isAboveElement = UIHelper.IsPositionAboveElement(droppedOverItem, e.GetPosition(droppedOverItem)); update = true; } finally { if (_insertAdornerManager != null) { if (update) { _insertAdornerManager.Update(droppedOverItem, isAboveElement); } else { _insertAdornerManager.Clear(); } } } }
private void AtDragOver(object sender, DragEventArgs e) { if (_dataType != null) { if (e.Data.GetDataPresent(_dataType)) { SetDragDropEffects(e); if (_insertAdornerManager != null) { var dropContainer = (ItemsControl)sender; var droppedOverItem = UIHelper.GetUIElement(dropContainer, e.GetPosition(dropContainer)); var isAboveElement = UIHelper.IsPositionAboveElement(droppedOverItem, e.GetPosition(droppedOverItem)); _insertAdornerManager.Update(droppedOverItem, isAboveElement); } } } e.Handled = true; }