void CustomGridDragAndDrop_DragOver(object sender, GridDragOverEventArgs e) { var result = VisualTreeHelper.HitTest(this.View, Mouse.GetPosition(View)); if (result != null && result.VisualHit != null) { var hitRow = LayoutTreeHelper.GetVisualParents(HitElement).Where(row => row is GroupGridRow || row is RowControl).FirstOrDefault() as FrameworkElement; if (hitRow != null) { var rowData = hitRow.DataContext as RowData; e.AllowDrop = Equals(rowData.Row.GetType(), e.DraggedRows[0].GetType()); e.Handled = true; } else { e.AllowDrop = false; e.Handled = true; } } }
private void GridPackedDragDropManager_OnDragOver(object sender, GridDragOverEventArgs e) { var manager = sender as GridDragDropManager; if (manager == null) { return; } switch (_dragSource) { case Packing: if (!manager.AllowDrop) { manager.AllowDrop = true; } break; default: if (manager.AllowDrop) { manager.AllowDrop = false; } break; } }