UIElement.AddHandler Metoda

Definicja

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

Przeciążenia

AddHandler(RoutedEvent, Delegate)

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

AddHandler(RoutedEvent, Delegate, Boolean)

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. Określ handledEventsToo , true że mają być wywoływane dostarczone procedury obsługi dla zdarzenia kierowanego, które zostało już oznaczone jako obsługiwane przez inny element wzdłuż trasy zdarzenia.Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.

AddHandler(RoutedEvent, Delegate)

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

public:
 virtual void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler);
abstract member AddHandler : System.Windows.RoutedEvent * Delegate -> unit
override this.AddHandler : System.Windows.RoutedEvent * Delegate -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate)

Parametry

routedEvent
RoutedEvent

Identyfikator dla zdarzenia kierowanego, które ma być obsłużone.An identifier for the routed event to be handled.

handler
Delegate

Odwołanie do implementacji programu obsługi.A reference to the handler implementation.

Implementuje

Uwagi

Można dodać tę samą procedurę obsługi dla tego samego zdarzenia wiele razy, nie wywołując wyjątku.You can add the same handler for the same event multiple times without raising an exception. Jednakże procedura obsługi jest wywoływana wielokrotnie, gdy zdarzenie jest obsługiwane.However, the handler is actually invoked multiple times when the event is handled. W związku z tym należy wziąć pod uwagę, jak takie zachowanie może mieć skutki uboczne, które należy uwzględnić w implementacji programu obsługi.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Ta metoda służy zwykle do zapewnienia implementacji metody dostępu "Add" dla wzorca dostępu do zdarzeń Microsoft .NETowego dla niestandardowego zdarzenia kierowanego.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NET event access pattern of a custom routed event.

Dotyczy

AddHandler(RoutedEvent, Delegate, Boolean)

Dodaje procedurę obsługi zdarzeń kierowanych dla określonego zdarzenia kierowanego, dodając procedurę obsługi do kolekcji programu obsługi w bieżącym elemencie.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. Określ handledEventsToo , true że mają być wywoływane dostarczone procedury obsługi dla zdarzenia kierowanego, które zostało już oznaczone jako obsługiwane przez inny element wzdłuż trasy zdarzenia.Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.

public:
 void AddHandler(System::Windows::RoutedEvent ^ routedEvent, Delegate ^ handler, bool handledEventsToo);
public void AddHandler (System.Windows.RoutedEvent routedEvent, Delegate handler, bool handledEventsToo);
member this.AddHandler : System.Windows.RoutedEvent * Delegate * bool -> unit
Public Sub AddHandler (routedEvent As RoutedEvent, handler As Delegate, handledEventsToo As Boolean)

Parametry

routedEvent
RoutedEvent

Identyfikator dla zdarzenia kierowanego, które ma być obsłużone.An identifier for the routed event to be handled.

handler
Delegate

Odwołanie do implementacji programu obsługi.A reference to the handler implementation.

handledEventsToo
Boolean

true zarejestrowanie procedury obsługi w taki sposób, aby była wywoływana nawet wtedy, gdy zdarzenie trasowane jest oznaczone jako obsługiwane w danych zdarzenia. w false celu zarejestrowania programu obsługi z domyślnym warunkiem, że nie będzie on wywoływany, jeśli zdarzenie trasowane zostało już oznaczone jako obsługiwane.true to register the handler such that it is invoked even when the routed event is marked handled in its event data; false to register the handler with the default condition that it will not be invoked if the routed event is already marked handled.

Wartość domyślna to false.The default is false.

Nie należy rutynowo monitować o obsługę zdarzenia kierowanego.Do not routinely ask to rehandle a routed event.

Przykłady

Poniższy przykład implementuje procedurę obsługi wywołaną na Initialized zdarzeniu na stronie, która dołącza zdefiniowany program obsługi do jednego z nazwanych elementów na stronie przy użyciu handledEventsToo true .The following example implements a handler invoked on the Initialized event on a page that attaches a defined handler to one of the named elements on the page using handledEventsToo true. Ta procedura obsługi zostanie wywołana nawet wtedy, gdy inny element wzdłuż trasy oznaczył dane zdarzenia udostępnionego jako obsłużone przed osiągnięciem elementu obsługi w marszrucie.This handler would be invoked even if another element along the route marked the shared event data as handled before reaching the handling element in the route.

void PrimeHandledToo(object sender, EventArgs e)
{
    dpanel2.AddHandler(Button.ClickEvent, new RoutedEventHandler(GetHandledToo), true);
}
Private Sub PrimeHandledToo(ByVal sender As Object, ByVal e As EventArgs)
    dpanel2.AddHandler(Button.ClickEvent, New RoutedEventHandler(AddressOf GetHandledToo), True)
End Sub

Uwagi

Przetwarzanie zdarzeń wejściowych niskiego poziomu w praktyce jest złożonym zadaniem.Processing low-level input events in a practical way is a complex task. Wiele formantów implementuje zachowanie w przypadku, gdy określone zdarzenie jest oznaczone jako obsłużone i jest zastępowane przez inne bardziej intuicyjne zdarzenie.Many controls implement behavior where a certain event is marked as handled, and is replaced by another more intuitive event. Ogólnie rzecz biorąc, kontrolka spowoduje oznaczenie zdarzenia wejściowego platformy jako obsługiwanego, jeśli istnieje pewien zamiar projektu.Generally, a control will only mark a platform input event as handled if there is some design intention for doing so. W niektórych scenariuszach te operacje związane z projektowaniem mogą nie być określone w wymaganiu dla zdarzenia wejściowego.In certain scenarios, those design intentions might not be what your particular handling of the input event requires. Jest to konieczne w przypadku takich scenariuszy, które rejestrują programy obsługi handledEventsToo zgodnie z oczekiwaniami true .It is for these scenarios that registering handlers with handledEventsToo as true is appropriate. Nie należy jednak wykonywać tej procedury.But you should not do this routinely. Wywoływanie programów obsługi w odpowiedzi na wszystkie zdarzenia, nawet jeśli są obsługiwane, będzie komplikuje swoją logikę przetwarzania zdarzeń aplikacji.Invoking handlers in response to all events even if handled will complicate your own application event processing logic. Jeśli logika obsługi jest istotna, może pojawić się spadek wydajności.You may see a decrease in performance if the handler logic is substantial. Należy zastrzec użycie dołączanych programów obsługi dla już obsłużonych zdarzeń, które są już wykryte podczas procesu tworzenia, które niektóre kontrolki obsługują zdarzenia, które nadal mają być obsługiwane przez logikę aplikacji.You should reserve the use of attaching handlers for already-handled events for situations where you have already discovered during the development process that certain controls are handling events that you still want to handle with application logic.

Inną techniką w celu uniknięcia zachowania klas dla niektórych kombinacji kontroli zdarzeń jest użycie wersji zapoznawczej tego zdarzenia.Another technique for avoiding the class handling behavior of certain event-control combinations is to use that event's preview alternative. Na przykład jeśli MouseLeftButtonDown jest oznaczone jako obsługiwane przez obsługę klasy, można zamiast tego dodać procedury obsługi PreviewMouseLeftButtonDown .For example, if MouseLeftButtonDown is marked handled by class handling, you might be able to add handlers for PreviewMouseLeftButtonDown instead.

Można dodać tę samą procedurę obsługi dla tego samego zdarzenia wiele razy, nie wywołując wyjątku.You can add the same handler for the same event multiple times without raising an exception. Jednakże procedura obsługi jest wywoływana wielokrotnie, gdy zdarzenie jest obsługiwane.However, the handler is actually invoked multiple times when the event is handled. W związku z tym należy wziąć pod uwagę, jak takie zachowanie może mieć skutki uboczne, które należy uwzględnić w implementacji programu obsługi.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Ta metoda służy zwykle do zapewnienia implementacji metody dostępu "Add" dla wzorca dostępu do zdarzeń Microsoft .NETowego dla niestandardowego zdarzenia kierowanego.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NET event access pattern of a custom routed event.

Dotyczy