0

スヌープではコマンドが「ApplySingleSpace」と表示されますが、こちらの記事に記載されている方法で無効にしてみると. このような:

<RichTextBox.CommandBindings>
     <CommandBinding 
       Command="ApplySingleSpace" 
       CanExecute="BlockTheCommand"/>
   </RichTextBox.CommandBindings>

.

  private void BlockTheCommand(object sender,
     CanExecuteRoutedEventArgs e)
   {
     e.CanExecute = false;
     e.Handled = true;
   }

コマンドがないため、アプリがクラッシュしApplySingleSpaceます。ApplySingleSpaceどちらにもありませんEditingCommands

私は何が欠けていますか?

4

3 に答える 3

2

残念ながら、それは私にはうまくいきません。コマンドを無効にしようとしている理由は、CTRL + 1 ジェスチャがキーボードフォーカスを持つリッチテキストボックスに飲み込まれているため、起動していない上位のネストされたビューに KeyBinding があるためです。

どうにかしてそれを無効にしようとする代わりに、あなたが望むことをするカスタムコマンドでその KeyBinding を上書きするのはどうですか?

<RichTextBox.InputBindings>
    <KeyBinding Command="local:YourCommands.Cmd1" Gesture="CTRL+1" />
<RichTextBox.InputBindings>

この質問から取得。

于 2011-01-08T00:32:08.040 に答える
1

この回答のコードを使用して
、C# でキープレス イベントをプログラムで生成するにはどうすればよいですか? リッチテキストボックスで処理したいもの以外の PreviewKeyDown のすべてのイベントを再起動することは、私にとってはうまくいくようです。(コピーにはCtrl-Cのみが必要です)。もちろん、それが必要な場合にのみ Ctrl-1 を再起動するようにすることもできます。


private void logKeyHandler(object sender, KeyEventArgs e)
{
    if (!(Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.C))
    {
        e.Handled = true;
        var routedEvent = Keyboard.KeyDownEvent; 
        this.RaiseEvent(
            new KeyEventArgs(
            Keyboard.PrimaryDevice, 
            PresentationSource.FromDependencyObject(this),
            0,
            e.Key) { RoutedEvent = routedEvent }
        );
    }
  }
 
于 2011-02-04T01:48:41.497 に答える
0

代わりにジェスチャーを試してみるのはどうですか...

        <RichTextBox.InputBindings>
            <KeyBinding Command="BlockTheCommand" Gesture="CTRL+1" />
        </RichTextBox.InputBindings>
于 2011-01-07T22:44:03.700 に答える