protected override bool CanInvoke(object sender, object eventArgs)
        {
            bool res = base.CanInvoke(sender, eventArgs);

#if SILVERLIGHT
            if (KeyGesture == null || !(eventArgs is KeyEventArgs))
            {
                return(res);
            }
            KeyEventArgs keyEventArgs = (KeyEventArgs)eventArgs;
            return(res && keyEventArgs.Key == KeyGesture.Key && Keyboard.Modifiers == KeyGesture.ModifierKeys);
#elif NETFX_CORE
            if (keyGesture == null || !(eventArgs is KeyRoutedEventArgs))
            {
                return(res);
            }
            KeyRoutedEventArgs keyEventArgs = (KeyRoutedEventArgs)eventArgs;
            return(res && keyEventArgs.Key == keyGesture.Key && ModifierKeysHelper.GetKeyboardModifiers() == keyGesture.ModifierKeys);
#else
            if (KeyGesture == null || !(eventArgs is InputEventArgs))
            {
                return(res);
            }
            InputEventArgs inputEventArgs = (InputEventArgs)eventArgs;
            return(res && KeyGesture.Matches(Source, inputEventArgs));
#endif
        }
        protected override bool CanInvoke(object sender, object eventArgs)
        {
            bool res = base.CanInvoke(sender, eventArgs);

            if (ModifierKeys != null)
#if !NETFX_CORE
            { res &= ModifierKeys == Keyboard.Modifiers; }
#else
            { res &= ModifierKeys == ModifierKeysHelper.GetKeyboardModifiers(); }
#endif
            return(res);
        }
 bool IsCtrlPressed(KeyEventArgs e)
 {
     return(ModifierKeysHelper.IsShiftPressed(ModifierKeysHelper.GetKeyboardModifiers(e)));
 }