다음을 통해 공유


FrameworkElement.ContextMenuOpening 이벤트

정의

요소의 상황에 맞는 메뉴를 열 때 발생합니다.

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 

이벤트 유형

설명

상황에 맞는 메뉴를 수동으로 열려면 이벤트 처리기가 관련 이벤트를 처리된 것으로 표시해야 합니다. 그렇지 않으면 속성의 ContextMenu 기존 값을 사용하여 상황에 맞는 메뉴를 자동으로 엽니다. 처리된 이벤트를 표시하면 기본 작업이 효과적으로 취소되고 속성 값을 ContextMenu 다시 설정한 다음 새 ContextMenu를 열 수 있습니다. 그러나 알고 있어야 하는 타이밍 문제가 있습니다. 처리기를 통해 ContextMenuOpening 상황에 맞는 메뉴를 완전히 바꾸려면 초기 상황에 맞는 메뉴가 null/비어 있지 않아야 합니다. 또는 이벤트를 처리한 다음 새 상황에 맞는 메뉴를 수동으로 열어야 할 수 있습니다. 자세한 내용은 방법: ContextMenuOpening 이벤트 처리를 참조하세요.

이 이벤트를 EventTrigger 스타일로 사용하려면 기본 연결된 이벤트를 참조해야 합니다.

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

기본 서비스 이벤트를 노출하는 에 대한 이벤트 구현이 트리거에서 FrameworkElement 사용할 수 있도록 식별자를 매핑 ContextMenuOpening 하지 않으므로 이 사용이 필요합니다.

ContextMenu 자체는 FrameworkElement 파생 클래스이지만 이 이벤트는 원본으로 열려 있는 상황에 맞는 메뉴에서 발생하지 않습니다. 이벤트는 컨텍스트 메뉴를 속성으로 "소유"하는 요소에서 발생하며 사용자가 UI에서 상황에 맞는 메뉴를 열려고 할 때만 발생합니다. 자체에 속성 ContextMenu 이 있을 수 있지만 이 시나리오는 ContextMenu 피해야 합니다(자세한 내용은 참조 FrameworkElement.ContextMenu).

ContextMenu 클래스 자체에도 비슷한 이벤트(Opened)가 있지만 Opened 사용자 작업을 취소할 수 있는 기회를 제공하지는 않습니다.

라우팅 이벤트 정보

식별자 필드 ContextMenuOpeningEvent
라우팅 전략 버블링
대리자 ContextMenuEventHandler
  • 재정의 OnContextMenuOpening 하여 파생 클래스에서 이 이벤트에 대한 클래스 처리를 구현합니다.

적용 대상

추가 정보