FrameworkElement.ContextMenuOpening Ereignis

Definition

Tritt ein, wenn ein Kontextmenü des Elements geöffnet wird.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 

Ereignistyp

ContextMenuEventHandler

Hinweise

Um Kontextmenüs manuell zu öffnen, sollten die Handler der Ereignisse das relevante Ereignis als behandelt markieren.To manually open context menus, handlers of the events should mark the relevant event as handled. Andernfalls wird der vorhandene Wert der- ContextMenu Eigenschaft verwendet, um automatisch ein Kontextmenü zu öffnen.Otherwise, the existing value of the ContextMenu property will be used to automatically open a context menu. Wenn das Ereignis behandelt wird, wird die Standardaktion effektiv abgebrochen, und es kann eine Gelegenheit sein, den Wert der Eigenschaft zurückzusetzen ContextMenu und dann die neue zu öffnen 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. Es gibt jedoch ein Problem mit der zeitlichen Steuerung, das Sie kennen sollten.However, there is a timing issue you should be aware of. Um das Kontextmenü durch einen Handler vollständig zu ersetzen ContextMenuOpening , darf das anfängliche Kontextmenü nicht NULL/leer sein.In order to completely replace the context menu through a ContextMenuOpening handler, the initial context menu must not be null / empty. Alternativ dazu müssen Sie möglicherweise das-Ereignis behandeln und dann manuell ein neues Kontextmenü öffnen.Alternatively, you might need to handle the event and then manually open a new context menu. Weitere Informationen finden Sie unter Gewusst wie: Behandeln des ContextMenuOpening-Ereignisses.For details, see How to: Handle the ContextMenuOpening Event.

Um dieses Ereignis als EventTrigger in einem Stil zu verwenden, müssen Sie auf das zugrunde liegende angefügte Ereignis verweisen:To use this event as an EventTrigger in a style, you must reference the underlying attached event:

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

(Diese Verwendung ist erforderlich, da die Ereignis Implementierung von FrameworkElement , die das zugrunde liegende Dienst Ereignis verfügbar macht, den Bezeichner nicht zuordnet ContextMenuOpening , sodass Sie ihn in Triggern verwenden können.)(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 selbst ist eine FrameworkElement abgeleitete Klasse, aber dieses Ereignis wird nicht aus dem als Quelle geöffneten Kontextmenü ausgelöst.ContextMenu itself is a FrameworkElement derived class, but this event will not be raised from the context menu being opened as a source. Das-Ereignis wird von dem-Element ausgelöst, das das Kontextmenü als Eigenschaft besitzt und nur ausgelöst wird, wenn ein Benutzer versucht, ein Kontextmenü in der Benutzeroberfläche zu öffnen.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. Es ist möglich, dass Sie ContextMenu über eine ContextMenu Eigenschaft verfügen, aber Sie sollten dieses Szenario vermeiden (Weitere Informationen finden Sie unter FrameworkElement.ContextMenu ).It is possible for ContextMenu itself to have a ContextMenu property, but you should avoid this scenario (for details, see FrameworkElement.ContextMenu).

Die- ContextMenu Klasse selbst verfügt auch über ein ähnliches Ereignis ( Opened ) Opened , bietet Ihnen jedoch nicht die Möglichkeit, die Benutzeraktion abzubrechen.The ContextMenu class itself also has a similar event (Opened) but Opened does not provide you the opportunity to cancel the user action.

Informationen zum RoutingereignisRouted Event Information

BezeichnerfeldIdentifier field ContextMenuOpeningEvent
Routing StrategieRouting strategy BlasenBubbling
DelegatDelegate ContextMenuEventHandler
  • OnContextMenuOpeningÜberschreiben, um die Klassen Behandlung für dieses Ereignis in abgeleiteten Klassen zu implementieren.Override OnContextMenuOpening to implement class handling for this event in derived classes.

Gilt für:

Weitere Informationen