예제 #1
0
 /// <summary>
 /// Adds an input binding given a command with keyboard shortcut information defined.
 /// </summary>
 /// <param name="command">The command containing a keyboard shortcut.</param>
 /// <param name="visual">The visual for which to register the binding.</param>
 /// <remarks>If the visual is null, the shortcut will be registered using the
 /// current application's MainWindow.</remarks>
 public static void AddInputBinding(this VisualRelayCommand command, UIElement visual)
 {
     if (!string.IsNullOrEmpty(command.KeyboardShortcutKey))
     {
         ErrorReporting.ReportErrorIf(command.KeyboardShortcutKey.Length != 1, "Invalid keyboard shortcut!");
         var modifiers = (ModifierKeys)command.KeyboardShortcutModifiers;
         if (char.IsUpper(command.KeyboardShortcutKey[0]))
         {
             modifiers |= ModifierKeys.Shift;
         }
         var keyConverter = new KeyConverter();
         var key          = (Key)keyConverter.ConvertFromInvariantString(command.KeyboardShortcutKey);
         if (visual == null)
         {
             visual = SingleInstanceApplication.Current.MainWindow;
         }
         visual.InputBindings.Add(new KeyBinding(command, key, modifiers));
     }
 }
예제 #2
0
        public KeyPressInfo GetKeyGestureForChar(char currentChar)
        {
            if (printableChars.TryGetValue(currentChar, out var result))
            {
                return(result);
            }

            ModifierKeys modifiers = ModifierKeys.None;
            var          ch        = currentChar.ToString();

            if (char.IsUpper(ch, 0))
            {
                ch        = ch.ToLower();
                modifiers = ModifierKeys.Shift;
            }

            var key = (Key)_keyCoverter.ConvertFromInvariantString(ch);

            return(new KeyPressInfo(key, modifiers));
        }
예제 #3
0
        // Importent
        //Key ConvertKeyFromString(string stringKey, CultureInfo culture)
        Key ConvertKeyFromString(string stringKey)
        {
            Key          m_key;
            KeyConverter cov = new KeyConverter();

            m_key = KeysFromCharExtension.GetDictionaryCodeKeys().FirstOrDefault(k => k.Key == stringKey).Value;
            if (m_key == Key.None)
            {
                try
                {
                    m_key = (Key)cov.ConvertFromInvariantString(stringKey.ToUpper());
                }
                catch
                {
                    // if not know set to Key.None
                    m_key = Key.None;
                }
            }
            return(m_key);
        }