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