public void Grab() { var layout = _guiElement.GetLayout(); // create the container where we will move the draggable inside and where we create highlight for drop targets DragAndDropStage = new Canvas(); _guiElement.GetStage().AddChild(DragAndDropStage); // replace the guiElement with a spacer while it is draggeed Replacer = new Spacer(layout.GetCalculatedWidth(), layout.GetCalculatedHeight()); _guiElement.GetParent().ReplaceChild(_guiElement, Replacer); OriginalPosition = new Vector2(layout.X, layout.Y); var absoluteGeometry = _guiElement.GetLayoutProcessingData().AbsoluteGeometry; layout.X = absoluteGeometry.X; layout.Y = absoluteGeometry.Y; // add the draggable on to the DragAndDropStage DragAndDropStage.AddChild(_guiElement); MousePosInComponent = new Point( GuiStage.MousePosition.X - layout.X, GuiStage.MousePosition.Y - layout.Y ); }