Я должен признаться, что не смог найти лучшего заголовка.
У меня есть элемент управления, который содержит в нижней части TextBox.Этот элемент управления имеет ContextMenu и, конечно, TextBox имеет свое обычное текстовое редактирование ContextMenu.Когда я щелкаю правой кнопкой мыши по внешнему элементу управления, открывается его ContextMenu, чего я и хочу.Если я щелкну правой кнопкой мыши по текстовому полю, он получит фокус и откроет контекстное меню редактирования текста.Но когда я щелкаю правой кнопкой мыши по текстовому полю, и у него нет фокуса клавиатуры, я не хочу устанавливать фокус и не хочу открывать контекстное меню текстового поля, вместо этого оно должно открывать контекстное меню внешнего управления.
Единственное, что мне удалось, - это игнорировать контекстное меню текстового поля при щелчке правой кнопкой мыши по текстовому полю.(для тестирования я создал элемент управления, полученный из TextBox)
protected override void OnMouseDown(MouseButtonEventArgs aArgs)
{
if(aArgs.ChangedButton == MouseButton.Right)
{
return;
}
base.OnMouseDown(aArgs);
}
Даже при этом текстовые поля OnContextMenuOpening
запускаются, но независимо от того, обрабатывается ли значение true или false, контекстное меню вообще не открывается.*
Надеюсь, у кого-то есть идея.