ContentElement.AddHandler Метод

Определение

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

Перегрузки

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)

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

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

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

handler
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)

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

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

handler
Delegate

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

handledEventsToo
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.

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