私は自分のテキストエディタをSilverlightで使用しています。私はリッチテキストボックス内のテキストを太字、イタリックまたはアンダーラインにするさまざまな機能を作った。ユーザがctrl-B、ctrl-U、ctrl-Iの組み合わせを押したときにも関数を実行したい。修飾キーの組み合わせ入力
これには最適な解決策はありますか?
私は自分のテキストエディタをSilverlightで使用しています。私はリッチテキストボックス内のテキストを太字、イタリックまたはアンダーラインにするさまざまな機能を作った。ユーザがctrl-B、ctrl-U、ctrl-Iの組み合わせを押したときにも関数を実行したい。修飾キーの組み合わせ入力
これには最適な解決策はありますか?
リッチテキストボックスの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();
}
}
}
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にキーボードのやりとりを明示的に置きます。
ありがとうございます、魅力的です。できるだけ早くこれを受け入れるよ! –