UIElement.AddHandler UIElement.AddHandler UIElement.AddHandler Method

Определение

Добавляет обработчик перенаправленного события для указанного перенаправленного события, помещая этот обработчик в коллекцию обработчиков текущего элемента.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.

Перегрузки

AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate)

Добавляет обработчик перенаправленного события для указанного перенаправленного события, помещая этот обработчик в коллекцию обработчиков текущего элемента.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) AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean)

Добавляет обработчик перенаправленного события для указанного перенаправленного события, помещая этот обработчик в коллекцию обработчиков текущего элемента.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. Укажите handledEventsToo как true, чтобы предоставленный обработчик вызывался для перенаправленного события, которое уже было отмечено как обработанное другим элементом на маршруте события.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) AddHandler(RoutedEvent, Delegate) AddHandler(RoutedEvent, Delegate)

Добавляет обработчик перенаправленного события для указанного перенаправленного события, помещая этот обработчик в коллекцию обработчиков текущего элемента.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

Параметры

routedEvent
RoutedEvent RoutedEvent RoutedEvent

Идентификатор маршрутизируемого события для обработки.An identifier for the routed event to be handled.

handler
Delegate Delegate Delegate

Ссылка на реализацию обработчика.A reference to the handler implementation.

Реализации

Комментарии

Можно добавить один и тот же обработчик того же события несколько раз, не вызывая исключение.You can add the same handler for the same event multiple times without raising an exception. Тем не менее обработчик вызывается несколько раз, когда событие обрабатывается.However, the handler is actually invoked multiple times when the event is handled. Таким образом рассмотрим, как это поведение может иметь побочные эффекты, которые следует учесть при реализации обработчика.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Этот метод обычно используется для реализации метода доступа «add» для Microsoft .NETMicrosoft .NET шаблона доступа события пользовательских перенаправленных событий.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean) AddHandler(RoutedEvent, Delegate, Boolean)

Добавляет обработчик перенаправленного события для указанного перенаправленного события, помещая этот обработчик в коллекцию обработчиков текущего элемента.Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. Укажите handledEventsToo как true, чтобы предоставленный обработчик вызывался для перенаправленного события, которое уже было отмечено как обработанное другим элементом на маршруте события.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

Параметры

routedEvent
RoutedEvent RoutedEvent RoutedEvent

Идентификатор маршрутизируемого события для обработки.An identifier for the routed event to be handled.

handler
Delegate Delegate Delegate

Ссылка на реализацию обработчика.A reference to the handler implementation.

handledEventsToo
Boolean Boolean Boolean

Значение true для регистрации обработчика, чтобы он вызывался даже в том случае, если перенаправленное событие помечено как обработанное в его данных события. Значение false для регистрации обработчика с условием по умолчанию, что он не будет вызываться, если перенаправленное событие уже помечено как обработанное.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.

Значение по умолчанию — false.The default is false.

Не следует постоянно прибегать к повторной обработке перенаправленного события.Do not routinely ask to rehandle a routed event.

Примеры

В следующем примере реализуется обработчик, вызванную Initialized событий на странице, которая присоединяет один из именованных элементов на странице с помощью определенных обработчик 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. Этот обработчик будет вызываться, даже если другой элемент в маршруте совместно используемые данные события как обработанные до достижения обрабатывающего элемента в маршруте.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

Комментарии

Обработка событий низкоуровневого ввода практическая — это сложная задача.Processing low-level input events in a practical way is a complex task. Многие элементы управления реализуют поведение, определенное событие помечено как обработанное куда заменяется более интуитивным событием.Many controls implement behavior where a certain event is marked as handled, and is replaced by another more intuitive event. Как правило элемент управления только отметит событие ввода платформы как обработанное, если имеется целями разработки таким образом.Generally, a control will only mark a platform input event as handled if there is some design intention for doing so. В некоторых сценариях желаемого может быть способа обработки событий ввода.In certain scenarios, those design intentions might not be what your particular handling of the input event requires. Это для этих сценариев, регистрации обработчиков с handledEventsToo как true подходит.It is for these scenarios that registering handlers with handledEventsToo as true is appropriate. Но этого не следует делать это регулярно.But you should not do this routinely. Вызов обработчиков в ответ на все события, даже в случае обработки усложнит событий в приложении логики обработки.Invoking handlers in response to all events even if handled will complicate your own application event processing logic. Снижение производительности может отображаться, если логика обработчика является существенным.You may see a decrease in performance if the handler logic is substantial. Необходимо зарезервировать использование присоединения обработчиков для уже обработанных событий для ситуаций, где были обнаружены во время разработки, некоторые элементы управления обработки событий, по-прежнему необходимо обработать с помощью приложения логики.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.

Предотвращение классов сочетания элементов управления другим способом является использование события предварительного просмотра.Another technique for avoiding the class handling behavior of certain event-control combinations is to use that event's preview alternative. Например если MouseLeftButtonDown помечено как обработанное обработкой классов, можно добавить обработчики для PreviewMouseLeftButtonDown вместо этого.For example, if MouseLeftButtonDown is marked handled by class handling, you might be able to add handlers for PreviewMouseLeftButtonDown instead.

Можно добавить один и тот же обработчик того же события несколько раз, не вызывая исключение.You can add the same handler for the same event multiple times without raising an exception. Тем не менее обработчик вызывается несколько раз, когда событие обрабатывается.However, the handler is actually invoked multiple times when the event is handled. Таким образом рассмотрим, как это поведение может иметь побочные эффекты, которые следует учесть при реализации обработчика.Therefore, consider how this behavior might have side effects that should be accounted for in your handler implementation.

Этот метод обычно используется для реализации метода доступа «add» для Microsoft .NETMicrosoft .NET шаблона доступа события пользовательских перенаправленных событий.You typically use this method to provide the implementation of the "add" accessor for the Microsoft .NETMicrosoft .NET event access pattern of a custom routed event.

Применяется к