комбинация клавиш ввода - PullRequest
2 голосов
/ 28 марта 2012

Я работаю над своим собственным текстовым редактором в Silverlight.Я сделал разные функции, чтобы сделать текст в richtextbox жирным, курсивом или подчеркнутым.Я хочу, чтобы функции запускались также, когда пользователь нажимает комбинации ctrl-B, ctrl-U, ctrl-I.

Что было бы лучшим решением для этого?

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Вы можете обнаружить ввод данных пользователем с помощью события KeyDown RichTextBox. Затем вы можете просто проверить правильную комбинацию ключа и модификатора в этом обработчике событий и вызвать ваши функции там:

private void MyRTB_KeyDown(object sender, KeyEventArgs e)
    {
        if (Keyboard.Modifiers == ModifierKeys.Control)
        {
            if (e.Key == Key.B) 
            {
                MakeBold();
            }
            else if (e.Key == Key.I)
            {
                MakeItalic();
            }
            else if (e.Key == Key.U)
            {
                Underline();
            }
        }
    }
0 голосов
/ 29 марта 2012

Обработчик событий KeyDown будет работать. Немного улучшенная версия - использовать KeyDownTrigger из Blend SDK. Ваш XAML будет выглядеть примерно так:

<RichTextBox>
  <i:Interaction.Triggers>
    <i:KeyDownTrigger Modifiers="Control" Key="B">
      <i:InvokeCommandAction Command="{Binding MakeBold}" />
    </i:KeyDownTrigger>
  </i:Interaction.Triggers>
</RichTextBox>

, где MakeBold отображается как ICommand в вашей модели представления. Это явно помещает все ваши клавиатурные взаимодействия в ваш XAML, а не в случайные биты кода.

...