private void Super_MouseUp(object sender, MouseButtonEventArgs e)
 {
     if (dragServo != null)
     {
         dragServo.SetValue(Panel.ZIndexProperty, 0);
         dragServo = null;
         Mouse.Capture(null);
     }
 }
        private void AddServo(double x, double y)
        {
            UcServoMain s = new UcServoMain(servos.Count + 1);

            s.Width  = 38;
            s.Height = 38;
            s.HorizontalAlignment = HorizontalAlignment.Left;
            s.VerticalAlignment   = VerticalAlignment.Top;
            s.Margin = new Thickness(x, y, 0, 0);
            s.MouseDownEventHandler += Servo_MouseDownEventHandler;
            gridPanel.Children.Add(s);
            servos.Add(s);
        }
        private void Servo_MouseDownEventHandler(object sender, EventArgs e)
        {
            UcServoMain    s  = (UcServoMain)sender;
            MouseEventArgs me = (MouseEventArgs)e;

            if (me.LeftButton == MouseButtonState.Pressed)
            {
                s.pObject = me.GetPosition(s);
                s.SetValue(Panel.ZIndexProperty, 999);
                dragServo = s;
                Mouse.Capture(gridPanel);
            }
        }
        private void btnRemoveControl_Click(object sender, RoutedEventArgs e)
        {
            if (servos.Count == 0)
            {
                btnRemoveControl.IsEnabled = false;
                return;
            }
            UcServoMain s = servos.ElementAt(servos.Count - 1);

            gridPanel.Children.Remove(s);
            servos.Remove(s);
            SetStatus();
        }
        private void btnAddControl_Click(object sender, RoutedEventArgs e)
        {
            if (servos.Count >= CONST.MAX_ROBOT_SERVO)
            {
                // It's not logic, button should be disabled already
                btnAddControl.IsEnabled = false;
                return;
            }
            UcServoMain s = new UcServoMain(servos.Count + 1);

            s.Width  = 38;
            s.Height = 38;
            s.HorizontalAlignment = HorizontalAlignment.Left;
            s.VerticalAlignment   = VerticalAlignment.Top;
            s.Margin = new Thickness(0, 0, 0, 0);
            s.MouseDownEventHandler += Servo_MouseDownEventHandler;
            gridPanel.Children.Add(s);
            servos.Add(s);
            SetStatus();
        }