Проблема с InlineUIContainer - PullRequest
       19

Проблема с InlineUIContainer

0 голосов
/ 13 апреля 2010

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

1 Ответ

1 голос
/ 15 апреля 2010

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, но вы можете блокировать любые другие команды по своему усмотрению.

...