FrameworkElement.ContextMenuOpening Evento

Definição

Ocorre quando qualquer menu de contexto no elemento é aberto.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 

Comentários

Para abrir manualmente menus de contexto, os manipuladores dos eventos devem marcar o evento relevante como manipulado.To manually open context menus, handlers of the events should mark the relevant event as handled. Caso contrário, o valor existente da propriedade ContextMenu será usado para abrir automaticamente um menu de contexto.Otherwise, the existing value of the ContextMenu property will be used to automatically open a context menu. Marcar o evento manipulado irá cancelar efetivamente a ação padrão e pode ser uma oportunidade para redefinir o valor da propriedade ContextMenu e, em seguida, abrir o novo 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. No entanto, há um problema de tempo que você deve estar ciente.However, there is a timing issue you should be aware of. Para substituir completamente o menu de contexto por meio de um manipulador de ContextMenuOpening, o menu de contexto inicial não deve ser nulo/vazio.In order to completely replace the context menu through a ContextMenuOpening handler, the initial context menu must not be null / empty. Como alternativa, talvez seja necessário manipular o evento e abrir manualmente um novo menu de contexto.Alternatively, you might need to handle the event and then manually open a new context menu. Para obter detalhes, confira Como: Manipule ode eventos ContextMenuOpening.For details, see How to: Handle the ContextMenuOpening Event.

Para usar esse evento como um EventTrigger em um estilo, você deve referenciar o evento anexado subjacente:To use this event as an EventTrigger in a style, you must reference the underlying attached event:

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

(Esse uso é necessário porque a implementação do evento em FrameworkElement que expõe o evento de serviço subjacente não mapeia o identificador de ContextMenuOpening, de modo que você possa usá-lo em gatilhos).(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 em si é uma classe derivada FrameworkElement, mas esse evento não será gerado no menu de contexto que está sendo aberto como uma origem.ContextMenu itself is a FrameworkElement derived class, but this event will not be raised from the context menu being opened as a source. O evento é gerado do elemento que "possui" o menu de contexto como uma propriedade e só é gerado quando um usuário tenta abrir um menu de contexto na interface do usuário.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. É possível que ContextMenu em si tenha uma propriedade ContextMenu, mas você deve evitar esse cenário (para obter detalhes, consulte FrameworkElement.ContextMenu).It is possible for ContextMenu itself to have a ContextMenu property, but you should avoid this scenario (for details, see FrameworkElement.ContextMenu).

A própria classe ContextMenu também tem um evento semelhante (Opened), mas Opened não oferece a oportunidade de cancelar a ação do usuário.The ContextMenu class itself also has a similar event (Opened) but Opened does not provide you the opportunity to cancel the user action.

Informações de evento encaminhadoRouted Event Information

Campo de identificadorIdentifier field ContextMenuOpeningEvent
Estratégia de roteamentoRouting strategy PropagaçãoBubbling
delegadoDelegate ContextMenuEventHandler
  • Substitua OnContextMenuOpening para implementar a manipulação de classe para esse evento em classes derivadas.Override OnContextMenuOpening to implement class handling for this event in derived classes.

Aplica-se a

Veja também