To reproduce: Add 2 TileGroupElements to a RadPanorama. Set the rowcount of the first to 2 and to the second one to 1. Add a tile to the first group and set its rowspan to 2. Start the application drag the tile, you will see exception. Workaround: Create a custom TileDragDropService: public class MyTileDragDropService : TileDragDropService { private Action<TileGroupElement, RadTileElement, int> OffsetTiles; private RadPanoramaElement Owner; public MyTileDragDropService(RadPanoramaElement owner) : base(owner) { this.Owner = (RadPanoramaElement)typeof(TileDragDropService).GetField("owner", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this); MethodInfo matchedMethod = null; foreach (MethodInfo method in typeof(TileDragDropService).GetMethods(BindingFlags.Instance | BindingFlags.NonPublic)) { if (method.Name == "OffsetTiles" && method.GetParameters().Length == 3) { matchedMethod = method; break; } } this.OffsetTiles = (Action<TileGroupElement, RadTileElement, int>)matchedMethod.CreateDelegate(typeof(Action<TileGroupElement, RadTileElement, int>), this); } protected override void HandleGroupedDragDrop(RadDropEventArgs e) { RadTileElement target = e.HitTarget as RadTileElement; RadTileElement source = this.Context as RadTileElement; Point dropLocation = e.DropLocation; if (target != null) { dropLocation = target.PointToControl(dropLocation); } TileGroupElement @group = GetTargetGroup(new RectangleF(dropLocation, source.Size)); if (source == null || @group == null) { return; } Point targetCell = GetTargetCell(@group, dropLocation); if (targetCell.X == -1) { return; } targetCell.X = Math.Abs(Math.Min(targetCell.X, @group.RowsCount - source.RowSpan)); if (targetCell.X >= @group.RowsCount) { targetCell.X = @group.RowsCount - 1; } source.Row = targetCell.X; source.Column = targetCell.Y; if (!@group.Items.Contains(source)) { (source.Parent.Parent as TileGroupElement).Items.Remove(source); @group.Items.Add(source); } int oldColSpan = source.ColSpan; source.ColSpan = 0; this.OffsetTiles(@group, source, oldColSpan); source.ColSpan = oldColSpan; source.Column -= oldColSpan; this.Owner.InvalidateMeasure(true); this.Owner.UpdateLayout(); return; } } And set it to the panorama: panorama.PanoramaElement.DragDropService = new MyTileDragDropService();