UIElement.AddHandler Metoda

Definice

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost, přidáním obslužné rutiny do kolekce obslužných rutin na aktuálním prvku.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

Přetížení

AddHandler(RoutedEvent, Delegate)

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost, přidáním obslužné rutiny do kolekce obslužných rutin na aktuálním prvku.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)

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost, přidáním obslužné rutiny do kolekce obslužných rutin na aktuálním prvku.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. Určete handledEventsToo , true zda má být vyvolána poskytnutá obslužná rutina pro směrovanou událost, která již byla označena jako zpracována jiným prvkem v rámci trasy události.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)

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost, přidáním obslužné rutiny do kolekce obslužných rutin na aktuálním prvku.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

Identifikátor směrované události, která má být zpracována.An identifier for the routed event to be handled.

handler
Delegate

Odkaz na implementaci obslužné rutiny.A reference to the handler implementation.

Implementuje

Poznámky

Stejnou obslužnou rutinu pro stejnou událost lze přidat několikrát bez vyvolání výjimky.You can add the same handler for the same event multiple times without raising an exception. Obslužná rutina je však ve skutečnosti vyvolána několikrát při zpracování události.However, the handler is actually invoked multiple times when the event is handled. Proto zvažte, jak toto chování může mít vedlejší účinky, které by měly být účtovány v implementaci obslužné rutiny.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Tato metoda se obvykle používá k zajištění implementace přístupového objektu Add pro vzor přístupu události Microsoft .NET vlastní směrované události.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.

Platí pro

AddHandler(RoutedEvent, Delegate, Boolean)

Přidá obslužnou rutinu směrované události pro zadanou směrovanou událost, přidáním obslužné rutiny do kolekce obslužných rutin na aktuálním prvku.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. Určete handledEventsToo , true zda má být vyvolána poskytnutá obslužná rutina pro směrovanou událost, která již byla označena jako zpracována jiným prvkem v rámci trasy události.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

Identifikátor směrované události, která má být zpracována.An identifier for the routed event to be handled.

handler
Delegate

Odkaz na implementaci obslužné rutiny.A reference to the handler implementation.

handledEventsToo
Boolean

true k zaregistrování obslužné rutiny tak, aby se vyvolala i v případě, že je směrovaná událost označena jako zpracovaná v datech události; false pro registraci obslužné rutiny s výchozí podmínkou, kterou nebude vyvolána, pokud je směrováná událost již označena jako zpracovaná.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.

Výchozí formát je false.The default is false.

Neprovádějte rutinní dotaz na zpracování směrované události.Do not routinely ask to rehandle a routed event.

Příklady

Následující příklad implementuje obslužnou rutinu vyvolanou na Initialized události na stránce, která připojí definovanou obslužnou rutinu k jednomu z pojmenovaných prvků na stránce pomocí 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. Tato obslužná rutina by se vyvolala i v případě, že jiný prvek na trase označila data sdílené události jako zpracovaná před dosažením elementu manipulace v trase.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

Poznámky

Zpracování událostí vstupu nízké úrovně praktickým způsobem je složitý úkol.Processing low-level input events in a practical way is a complex task. Mnoho ovládacích prvků implementuje chování, kde je určitá událost označena jako zpracovaná, a je nahrazena jinou intuitivnější událostí.Many controls implement behavior where a certain event is marked as handled, and is replaced by another more intuitive event. Obecně platí, že ovládací prvek bude označovat pouze událost vstupu platformy, jak je zpracována, pokud existuje nějaký záměr návrhu.Generally, a control will only mark a platform input event as handled if there is some design intention for doing so. V některých scénářích nemusí tyto záměry vycházet z toho, co konkrétní zpracování vstupní události vyžaduje.In certain scenarios, those design intentions might not be what your particular handling of the input event requires. Je určena pro tyto scénáře, které registrují obslužné rutiny s nástrojem handledEventsToo , jako true je to vhodné.It is for these scenarios that registering handlers with handledEventsToo as true is appropriate. Ale neměli byste to dělat rutinně.But you should not do this routinely. Vyvolávání obslužných rutin v reakci na všechny události i v případě, že zpracování bude zkomplikovat vlastní logiky zpracování událostí aplikace.Invoking handlers in response to all events even if handled will complicate your own application event processing logic. Pokud je logika obslužné rutiny značná, může se zobrazit snížení výkonu.You may see a decrease in performance if the handler logic is substantial. Měli byste rezervovat použití připojovat obslužné rutiny pro již zpracovávané události pro situace, kdy jste již zjistili během procesu vývoje, že některé ovládací prvky zpracovávají události, které stále chcete zpracovávat pomocí logiky aplikace.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.

Další metodou pro zamezení chování zpracování tříd určitých kombinací řízení událostí je použít alternativní náhled této události.Another technique for avoiding the class handling behavior of certain event-control combinations is to use that event's preview alternative. Například pokud MouseLeftButtonDown je označeno zpracováním třídou, může být možné místo toho přidat obslužné rutiny PreviewMouseLeftButtonDown .For example, if MouseLeftButtonDown is marked handled by class handling, you might be able to add handlers for PreviewMouseLeftButtonDown instead.

Stejnou obslužnou rutinu pro stejnou událost lze přidat několikrát bez vyvolání výjimky.You can add the same handler for the same event multiple times without raising an exception. Obslužná rutina je však ve skutečnosti vyvolána několikrát při zpracování události.However, the handler is actually invoked multiple times when the event is handled. Proto zvažte, jak toto chování může mít vedlejší účinky, které by měly být účtovány v implementaci obslužné rutiny.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Tato metoda se obvykle používá k zajištění implementace přístupového objektu Add pro vzor přístupu události Microsoft .NET vlastní směrované události.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.

Platí pro