修饰键组合输入

时间:2012-03-28 18:16:34

标签: c# silverlight richtextbox

我正在使用Silverlight自己的文本编辑器。我使用不同的函数在richtextbox中创建粗体,斜体或带下划线的文本。我希望在用户按下组合键ctrl-B,ctrl-U,ctrl-I时也可以运行这些功能。

对此最好的解决方案是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用RichTextBox的KeyDown事件检测用户输入。然后,您只需在该事件处理程序中检查键和修饰符的正确组合,并在那里调用您的函数:

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

答案 1 :(得分:0)

KeyDown事件处理程序将起作用。稍微改进的版本是使用Blend SDK中的KeyDownTrigger。你的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中,而不是随机的代码位。