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 

설명

상황에 맞는 메뉴를 수동으로 열려면 이벤트 처리기가 관련 이벤트를 처리 된 것으로 표시 해야 합니다.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.

적용 대상

추가 정보