FrameworkElement.ContextMenuOpening FrameworkElement.ContextMenuOpening FrameworkElement.ContextMenuOpening FrameworkElement.ContextMenuOpening Event

Определение

Происходит при открытии какого-либо контекстного меню в элементе.Occurs when any context menu on the element is opened.

public:
 event System::Windows::Controls::ContextMenuEventHandler ^ ContextMenuOpening;
public event System.Windows.Controls.ContextMenuEventHandler ContextMenuOpening;
member this.ContextMenuOpening : System.Windows.Controls.ContextMenuEventHandler 
Public Custom Event ContextMenuOpening As ContextMenuEventHandler 

Комментарии

Вручную открыть контекстные меню, обработчики событий следует помечать соответствующее событие как обработанное.To manually open context menus, handlers of the events should mark the relevant event as handled. В противном случае существующее значение ContextMenu свойство будет использоваться для автоматического открытия контекстного меню.Otherwise, the existing value of the ContextMenu property will be used to automatically open a context menu. Маркировка события как обработанного эффективно отменит действие по умолчанию и может быть возможность сбросить значение ContextMenu свойство и откройте новый ContextMenu.Marking the event handled will effectively cancel the default action, and could be an opportunity to reset the value of the ContextMenu property and then open the new ContextMenu. Тем не менее есть ошибки синхронизации, которые следует учитывать.However, there is a timing issue you should be aware of. Чтобы полностью заменить контекстное меню способом ContextMenuOpening обработчик, начальной контекстное меню не должно быть null или пустым.In order to completely replace the context menu through a ContextMenuOpening handler, the initial context menu must not be null / empty. Кроме того может потребоваться обработать событие и затем вручную открыть новое контекстное меню.Alternatively, you might need to handle the event and then manually open a new context menu. Подробную информацию см. в разделе Практическое руководство. Обработка события ContextMenuOpening.For details, see How to: Handle the ContextMenuOpening Event.

Чтобы использовать это событие как EventTrigger в стиле, необходимо сослаться на основное присоединенное событие:To use this event as an EventTrigger in a style, you must reference the underlying attached event:

<EventTrigger RoutedEvent="ContextMenuService.ContextMenuOpening">
  <!-- storyboard here ... -->
</EventTrigger>

(Такое использование не требуются, поскольку реализация событий на FrameworkElement , предоставляет базовые события службы не были сопоставлены ContextMenuOpening идентификатор таким образом, что его можно использовать в триггерах).(This usage is required because the event implementation on FrameworkElement that exposes the underlying service event does not map the ContextMenuOpening identifier such that you can use it in triggers).

ContextMenu сам по себе является FrameworkElement производного класса, но это событие не будет вызываться в контекстном меню, открываемом в качестве источника.ContextMenu itself is a FrameworkElement derived class, but this event will not be raised from the context menu being opened as a source. События из элемента, «владеет» в контекстном меню, как свойство и только тогда, когда пользователь пытается открыть контекстное меню в пользовательском Интерфейсе.The event is raised from the element that "owns" the context menu as a property and is only raised when a user attempts to open a context menu in the UI. Существует возможность ContextMenu сам иметь ContextMenu свойство, но следует избегать в этом сценарии (Дополнительные сведения см. в разделе FrameworkElement.ContextMenu).It is possible for ContextMenu itself to have a ContextMenu property, but you should avoid this scenario (for details, see FrameworkElement.ContextMenu).

ContextMenu Сам класс также имеет аналогичное событие (Opened), но Opened не предоставляет вам возможность отмены действия пользователя.The ContextMenu class itself also has a similar event (Opened) but Opened does not provide you the opportunity to cancel the user action.

Сведения о маршрутизируемом событииRouted Event Information

Поле идентификатораIdentifier field ContextMenuOpeningEvent
Стратегия маршрутизацииRouting strategy Восходящая маршрутизацияBubbling
делегатDelegate ContextMenuEventHandler
  • Переопределить OnContextMenuOpening реализовать обработчик класса для этого события в производных классах.Override OnContextMenuOpening to implement class handling for this event in derived classes.

Применяется к

Дополнительно