public override void PreviewKeyDown(object sender, KeyEventArgs ea)
        {
            var key = ea.Key == Key.System ? ea.SystemKey : ea.Key;

            if (key.IsModifier() || _selectListers)
            {
                base.PreviewKeyDown(sender, ea);
                return;
            }

            switch (key)
            {
            case Key.Escape:
                Binding = null;
                Close();
                break;

            case Key.Return:
                SelectListers();
                break;

            default:
                if (Binding == null)
                {
                    Binding = new KexBinding(Group, key, ea.KeyboardDevice.Modifiers, CommandName, null);
                }
                else if (!(Binding is KexDoubleBinding))
                {
                    Text   += ", ";
                    Binding = new KexDoubleBinding(Binding.Group, Binding.Key, Binding.Modifier, key, ea.KeyboardDevice.Modifiers, CommandName, null);
                }
                else
                {
                    ea.Handled = true;
                    return;
                }

                if (ea.KeyboardDevice.Modifiers != ModifierKeys.None)
                {
                    Text += $"{ea.KeyboardDevice.Modifiers}+{key}";
                }
                else
                {
                    Text += key;
                }
                SetCaret(Text.Length);
                break;
            }

            ea.Handled = true;
        }
Exemple #2
0
 public KexBindingItem(KexBinding binding) : this(binding.CommandName, binding.Group)
 {
     Binding = binding;
 }