Поделиться через


Практическое руководство. Обработка перенаправленных событий

Обновлен: Ноябрь 2007

В этом примере описаны принципы действия всплывающих событий и способы написания обработчика, который может обрабатывать данные перенаправленных событий.

Пример

В Windows Presentation Foundation (WPF) элементы располагаются в структуре дерева элементов. Родительский элемент может участвовать в обработке событий, которые изначально вызываются его дочерними элементами в дереве элементов. Это возможно благодаря маршрутизации событий.

Перенаправленные события обычно следуют по одному из двух вариантов маршрутизации: восходящей или нисходящей. В этом примере основное внимание уделяется всплывающему событию и используется событие ButtonBase.Click, чтобы показать, как работает маршрутизация.

В следующем примере используется синтаксис атрибута XAML для присоединения обработчика событий к общему родительскому элементу, которым в этом примере является StackPanel. Вместо присоединения отдельных обработчиков событий для каждого дочернего элемента Button, в примере используется синтаксис атрибута для присоединения обработчика событий к родительскому элементу StackPanel. Этот шаблон обработки событий показывает, как использовать маршрутизирование событий для снижения числа элементов, к которым присоединен обработчик. Все всплывающие события для каждого маршрута Button направляются через родительский элемент.

Обратите внимание, что на родительском элементе StackPanel имя события Click, указанное в качестве атрибута, частично определяется с помощью указания класса Button. Класс Button является производным от класса ButtonBase, который содержит событие Click в своем списке членов. Этот метод частичного уточнения для присоединения обработчика событий необходим, если обрабатываемое событие не существует в списке членов элемента, к которому присоединен обработчик перенаправленных событий.

<StackPanel
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="SDKSample.RoutedEventHandle"
  Name="dpanel"
  Button.Click="HandleClick"
>
  <StackPanel.Resources>
      <Style TargetType="{x:Type Button}">
        <Setter Property="Height" Value="20"/>
        <Setter Property="Width" Value="250"/>
        <Setter Property="HorizontalAlignment" Value="Left"/>
      </Style>
  </StackPanel.Resources>
  <Button Name="Button1">Item 1</Button>
  <Button Name="Button2">Item 2</Button>
  <TextBlock Name="results"/>
</StackPanel>

Полный пример см. в разделе Пример обработки перенаправленных событий.

См. также

Основные понятия

Общие сведения о входных данных

Общие сведения о перенаправленных событиях

Терминология синтаксиса XAML

Ссылки

RoutedEvent

Другие ресурсы

Разделы руководства, посвященные событиям

Примеры использования событий