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 回答