// only for IBranch private void MagnetMiddle(object source, BaseShape other) { if (other == null) { return; } // change logic for each child. _pivot.DoAll(i => { if (!other.ChildrenNode.Contains(i)) { other.ChildrenNode.Add(i); i.Parent = other; } }); other.ArrangeChildrenPosition(); _pivot.ResetStroke(); other.ResetStroke(); }