0

RichTextBox に Windows.Documents.InlineUIContainer があり、Ctrl+Space などのキーの組み合わせを押すと、配置のフォント サイズが変わることがあります。これらのイベントを処理して何らかの形でブロックする場所が見つかりませんでした。RichTextBox でブロックしたくありません。InlineUIContainer でのみブロックする方法を探しています。

4

1 に答える 1

1

InlineUIContainer は FrameworkContentElement であるため、すべての通常のイベント ルーティングに参加します。そのため、コマンド ルーティングをブロックするには、InlineUIContainer でCommandManager.AddExecutedHandler(または同等に) を使用し、コマンドを処理済みとしてマークする必要があります。AddHandler(CommandManager.ExecutedEvent)

container.AddHandler(CommandManager.ExecutedEvent, new ExecutedRoutedEventHandler((obj, e) =>
{
  var command = e.Command as RoutedCommand;
  if(command!=null && command.OwnerType==typeof(EditingCommands))
    e.Handled = true;
}));

または、同じハンドラーをインライン UI コンテンツ (InlineUIContainer.Content) に追加する方が簡単な場合は、追加することもできます。

上記のコードはすべての EditingCommands をブロックしますが、必要に応じて他のコマンドをブロックできることに注意してください。

于 2010-04-15T00:17:14.887 に答える