private void ShapeMouseDown(object sender, MouseButtonEventArgs e) { var originalSource = e.GetType().GetProperty("OriginalSource").GetValue(e, null); if ((string)((FrameworkElement)originalSource).Tag == ElementRotatingService.RotationElementTag) return; Point startPosition = e.GetPosition(surfaceElement); moveStartX = startPosition.X; moveStartY = startPosition.Y; if (ShapeSelectedChanged != null) { ShapeSelectedChanged(this, new ShapeSelectedEventArgs() { PreviouslySelectedShape = ShapeSelected, NewSelectedShape = sender as FrameworkElement }); } ShapeSelected = sender as FrameworkElement; isMoving = true; }