Freigeben über


FrameworkElement.ContextMenuOpening Ereignis

Definition

Tritt ein, wenn ein Kontextmenü des Elements geöffnet wird.

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

Hinweise

Um Kontextmenüs manuell zu öffnen, sollten Handler der Ereignisse das relevante Ereignis als behandelt markieren. Andernfalls wird der vorhandene Wert der ContextMenu -Eigenschaft verwendet, um automatisch ein Kontextmenü zu öffnen. Wenn Sie das behandelte Ereignis markieren, wird die Standardaktion effektiv abgebrochen. Dies kann eine Möglichkeit sein, den Wert der ContextMenu -Eigenschaft zurückzusetzen und dann das neue ContextMenuzu öffnen. Es gibt jedoch ein Zeitproblem, das Sie beachten sollten. Um das Kontextmenü vollständig durch einen ContextMenuOpening Handler zu ersetzen, darf das anfängliche Kontextmenü nicht null/leer sein. Alternativ müssen Sie möglicherweise das Ereignis behandeln und dann manuell ein neues Kontextmenü öffnen. Weitere Informationen finden Sie unter Vorgehensweise: Behandeln des ContextMenuOpening-Ereignisses.

Um dieses Ereignis als in EventTrigger einem Stil zu verwenden, müssen Sie auf das zugrunde liegende angefügte Ereignis verweisen:

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

(Diese Verwendung ist erforderlich, da die Ereignisimplementierung für FrameworkElement , die das zugrunde liegende Dienstereignis verfügbar macht, den ContextMenuOpening Bezeichner nicht zuordnen, sodass Sie ihn in Triggern verwenden können.)

ContextMenu selbst ist eine FrameworkElement abgeleitete Klasse, aber dieses Ereignis wird nicht aus dem Kontextmenü ausgelöst, das als Quelle geöffnet wird. Das Ereignis wird von dem Element ausgelöst, das das Kontextmenü als Eigenschaft besitzt, und wird nur ausgelöst, wenn ein Benutzer versucht, ein Kontextmenü auf der Benutzeroberfläche zu öffnen. Es ist möglich ContextMenu , selbst über eine ContextMenu Eigenschaft zu verfügen, aber Sie sollten dieses Szenario vermeiden (ausführliche Informationen finden Sie unter FrameworkElement.ContextMenu).

Die ContextMenu -Klasse selbst weist ebenfalls ein ähnliches Ereignis (Opened) auf, bietet Ihnen jedoch Opened nicht die Möglichkeit, die Benutzeraktion abzubrechen.

Informationen zum Routingereignis

Bezeichnerfeld ContextMenuOpeningEvent
Routingstrategie Bubbling
Delegat ContextMenuEventHandler
  • Überschreiben Sie OnContextMenuOpening , um die Klassenbehandlung für dieses Ereignis in abgeleiteten Klassen zu implementieren.

Gilt für:

Weitere Informationen