public static MoveStrategyContext FromSelection(ToolBehavior toolBehavior, SceneElement primarySelection, IList <SceneElement> selectedElements, IList <BaseFrameworkElement> draggedElements, Vector duplicationOffset, Point referencePoint) { MoveStrategyContext moveStrategyContext = new MoveStrategyContext(); moveStrategyContext.ToolBehaviorContext = toolBehavior.ToolBehaviorContext; moveStrategyContext.Transaction = (IToolBehaviorTransaction)toolBehavior; moveStrategyContext.MouseDevice = toolBehavior.MouseDevice; moveStrategyContext.PrimarySelection = primarySelection; moveStrategyContext.SelectedElements = new ReadOnlyCollection <SceneElement>(selectedElements ?? (IList <SceneElement>) new List <SceneElement>()); moveStrategyContext.DraggedElements = new ReadOnlyCollection <BaseFrameworkElement>(draggedElements ?? (IList <BaseFrameworkElement>) new List <BaseFrameworkElement>()); moveStrategyContext.DuplicationOffset = duplicationOffset; moveStrategyContext.SnapshotDraggedElements(moveStrategyContext.ActiveView, referencePoint); return(moveStrategyContext); }