我正在使用Silverlight自己的文本编辑器。我使用不同的函数在richtextbox中创建粗体,斜体或带下划线的文本。我希望在用户按下组合键ctrl-B,ctrl-U,ctrl-I时也可以运行这些功能。
对此最好的解决方案是什么?
答案 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中,而不是随机的代码位。