Private void StackPanel_MouseLeftButtonDown (object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
MousePosition = e. GetPosition (null );
TrackingMouseMove = true;
If (null! = Element)
{
Element. CaptureMouse ();
Element. Cursor = Cursors. Hand;
}
Status. Text = "press the mouse ";
}
Private void StackPanel_MouseMove (object sender, MouseEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
If (trackingMouseMove)
{
Double x = e. GetPosition (null). X;
Double y = e. GetPosition (null). Y;
Double deltaV = e. GetPosition (null). Y-mousePosition. Y;
Double deltaH = e. GetPosition (null). X-mousePosition. X;
Double newTop = deltaV + (double) element. GetValue (Canvas. TopProperty );
Double newLeft = deltaH + (double) element. GetValue (Canvas. LeftProperty );
Element. SetValue (Canvas. TopProperty, newTop );
Element. SetValue (Canvas. LeftProperty, newLeft );
MousePosition = e. GetPosition (null );
}
Status. Text = "moving the mouse ";
}
Private void StackPanel_MouseLeftButtonUp (object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
TrackingMouseMove = false;
Element. ReleaseMouseCapture ();
MousePosition. X = mousePosition. Y = 0;
Element. Cursor = null;
Status. Text = "Release the mouse ";
}