/// <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)); } }
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)); }
// 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); }