<Canvas x:Name="Holder" Grid.Row="2" Width="200" Height="200"> <Rectangle x:Name="Rect" Width="20" Height="20" Canvas.Left="10" Canvas.Top="10" Fill="Red" MouseLeftButtonDown="Rectangle_MouseLeftButtonDown" MouseMove="Rectangle_MouseMove" MouseLeftButtonUp="Rect_MouseLeftButtonUp" ></Rectangle> </Canvas>
Point p; bool dragging; private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { dragging = true; p = e.GetPosition(Holder); } private void Rectangle_MouseMove(object sender, MouseEventArgs e) { if (dragging) { Point p2 = e.GetPosition(Holder); Rect.SetValue(Canvas.TopProperty, (double)Rect.GetValue(Canvas.TopProperty) + ( p2.Y - p.Y)); Rect.SetValue(Canvas.LeftProperty, (double)Rect.GetValue(Canvas.LeftProperty) + (p2.X - p.X)); p = p2; } } private void Rect_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { dragging = false; }Crude (if you drag too fast the mouse up can occur outside the Rectangle etc) but should get you started.....