<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.....