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 

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 ContextMenu-Eigenschaft zurückzusetzen und dann die neue ContextMenuzu öffnen.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ü vollständig durch einen ContextMenuOpening Handler zu ersetzen, 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 Vorgehensweise: Behandeln Sie das ContextMenuOpening-Ereignis.For details, see How to: Handle the ContextMenuOpening Event.

Wenn Sie dieses Ereignis als EventTrigger in einem Stil verwenden möchten, 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 auf FrameworkElement, die das zugrunde liegende Dienst Ereignis verfügbar macht, den ContextMenuOpening Bezeichner nicht zuordnet, 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 ContextMenu selbst ü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 aber nicht die Möglichkeit bietet, 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
delegateDelegate ContextMenuEventHandler
  • Überschreiben Sie OnContextMenuOpening, 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:

Siehe auch