Практическое руководство. Обработка перенаправленных событий
Обновлен: Ноябрь 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>
Полный пример см. в разделе Пример обработки перенаправленных событий.
См. также
Основные понятия
Общие сведения о входных данных
Общие сведения о перенаправленных событиях