FrameworkElement.ContextMenuOpening 이벤트

정의

요소의 상황에 맞는 메뉴를 열 때 발생합니다.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 

이벤트 유형

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. 이벤트는 상황에 맞는 메뉴를 속성으로 "소유" 하는 요소에서 발생 하며 사용자가 UI에서 상황에 맞는 메뉴를 열려고 시도 하는 경우에만 발생 합니다.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.

적용 대상

추가 정보