public override List <ElementSite> CaptureOrderedSequence(UIElement source) { var grid = GetParentGrid(source); List <ElementSite> elementSites = grid.ColumnDefinitions.Any(c => ReferenceEquals(source, OrderableBehavior.GetDragHeader(c))) ? GetColumnSequence(grid) : GetRowSequence(grid); ((DefinitionSite)OrderableBehavior.GetSite(source)).IsAnimationEnabled = false; return(elementSites); }
public override void ReleaseOrderedSequence(UIElement source, List <ElementSite> elements) { var grid = GetParentGrid(source); Action <UIElement, int> setDef; Action <DefinitionSite> addDef; if (grid.ColumnDefinitions.Any(c => ReferenceEquals(source, OrderableBehavior.GetDragHeader(c)))) { grid.ColumnDefinitions.Clear(); setDef = Grid.SetColumn; addDef = d => grid.ColumnDefinitions.Add((ColumnDefinition)d.Definition); } else { grid.RowDefinitions.Clear(); setDef = Grid.SetRow; addDef = d => grid.RowDefinitions.Add((RowDefinition)d.Definition); } for (var i = 0; i < elements.Count; i++) { var site = (DefinitionSite)elements[i]; if (site.Children != null) { foreach (var child in site.Children) { setDef(child, i); } } addDef(site); } var elementSite = (DefinitionSite)OrderableBehavior.GetSite(source); elementSite.IsAnimationEnabled = true; elementSite.Offset = OrderableBehavior.CalcElementOffset(elements, elementSite); grid.UpdateLayout(); foreach (var site in elements.DirectCast <DefinitionSite>()) { site.UpdateRenderOffset(); site.QueryDispose(); } }
private ElementSite GetCurrentSite(DefinitionBase definition) { var site = OrderableBehavior.GetSite(definition) as DefinitionSite; if (site == null) { return(null); } site.CancelDisposing(); if (ReferenceEquals(site.DragHeader, DraggableBehavior.DraggedElement)) { site.Offset = site.RenderOffset; site.IsAnimationEnabled = false; } return(site); }