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. 속성으로 상황에 맞는 메뉴를 "소유" 하 고 사용자 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.

적용 대상

추가 정보