我在RichTextBox中有一个Windows.Documents.InlineUIContainer,有时当我按下Ctrl + Space等组合键时,它的字体大小会发生变化。我找不到任何地方来处理这些事件并以某种方式阻止它们。我不想在RichTextBox中阻止它。我更想找到一种方法来阻止它只在InlineUIContainer上。
答案 0 :(得分:1)
InlineUIContainer是一个FrameworkContentElement,因此它参与所有正常的事件路由。因此,阻止命令路由需要做的是在InlineUIContainer上使用CommandManager.AddExecutedHandler
(或等效AddHandler(CommandManager.ExecutedEvent)
)并将命令标记为Handled。
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,但您可以根据需要阻止任何其他命令。