private static void DragChildren(object element, MouseEventArgs e)
 {
     if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
     {
         IDragBehavior draggable = element as IDragBehavior;
         if (draggable != null)
         {
             foreach (FrameworkElement obj in draggable.GetChildElements())
             {
                 DoDrag(obj, e);
             }
         }
     }
 }
 private static void DragFinishedChildren(object element)
 {
     if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
     {
         IDragBehavior draggable = element as IDragBehavior;
         if (draggable != null)
         {
             foreach (FrameworkElement obj in draggable.GetChildElements())
             {
                 obj.ClearValue(OriginalXPropertyKey);
                 obj.ClearValue(OriginalYPropertyKey);
             }
         }
     }
 }
        private static void DragStartedChildren(object element, MouseButtonEventArgs e)
        {
            if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
            {
                IDragBehavior draggable = element as IDragBehavior;
                if (draggable != null)
                {
                    foreach (FrameworkElement obj in draggable.GetChildElements())
                    {
                        Point pos = e.GetPosition(obj as IInputElement);

                        // save the position of the mouse to the start position
                        SetOriginalX(obj, pos.X);
                        SetOriginalY(obj, pos.Y);
                    }
                }
            }
        }