2012-03-28 12 views
2

私は自分のテキストエディタをSilverlightで使用しています。私はリッチテキストボックス内のテキストを太字、イタリックまたはアンダーラインにするさまざまな機能を作った。ユーザがctrl-B、ctrl-U、ctrl-Iの組み合わせを押したときにも関数を実行したい。修飾キーの組み合わせ入力

これには最適な解決策はありますか?

答えて

1

リッチテキストボックスの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(); 
      } 
     } 
    } 
+0

ありがとうございます、魅力的です。できるだけ早くこれを受け入れるよ! –

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にキーボードのやりとりを明示的に置きます。

関連する問題