Проблема с InlineUIContainer

У меня есть Windows.Documents.InlineUIContainer в RichTextBox, и иногда это размер шрифта изменения выравнивания, когда я нажимаю комбинацию клавиш, например Ctrl+ Пробел. Я не мог найти места, чтобы обработать эти события и как-то их заблокировать. Я не хочу блокировать это в RichTextBox. Я больше ищу способ заблокировать его только на InlineUIContainer.

1 ответ

InlineUIContainer - это FrameworkContentElement, поэтому он участвует во всей обычной маршрутизации событий. Таким образом, чтобы заблокировать командную маршрутизацию нужно сделать, это использовать CommandManager.AddExecutedHandler (или эквивалентно AddHandler(CommandManager.ExecutedEvent)) на InlineUIContainer и пометьте команды как обработанные.

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

В качестве альтернативы тот же обработчик может быть добавлен к содержимому встроенного интерфейса пользователя (InlineUIContainer.Content), если это проще сделать таким образом.

Обратите внимание, что приведенный выше код блокирует все команды EditingCommands, но вы можете блокировать любые другие команды по своему усмотрению.

Другие вопросы по тегам