方法 : ルーティング イベントを処理する
更新 : 2007 年 11 月
バブル イベントの動作と、ルーティング イベント データを処理できるハンドラを作成する方法を次の例に示します。
使用例
Windows Presentation Foundation (WPF) では、要素は、要素ツリー構造体に配置されます。親要素は、要素ツリー内で最初に子要素が発生させたイベントの処理に参加できます。これは、イベント ルーティングにより可能です。
ルーティング イベントは通常、バブルまたはトンネルの 2 つのルーティング方法のいずれかに従います。この例では、バブル イベントに焦点を当て、ButtonBase.Click イベントを使用してルーティングの動作を示します。
XAML 属性構文を使用してイベント ハンドラを共通の親要素 (この例では、StackPanel) にアタッチする方法を次の例に示します。この例では、各 Button 子要素の個々のイベント ハンドラをアタッチするのではなく、属性構文を使用してイベント ハンドラを StackPanel 親要素にアタッチします。このイベント処理パターンは、ハンドラがアタッチされる要素の数を減らすための手法としてイベント ルーティングを使用する方法を示します。各 Button のすべてのバブル イベントが親要素を通じてルーティングされます。
親 StackPanel 要素では、属性として指定された Click イベント名は、Button クラスに名前を付けて部分的に修飾されます。Button クラスは、そのメンバの一覧に Click イベントを持つ ButtonBase 派生クラスです。イベント ハンドラをアタッチするためのこの部分修飾手法が必要になるのは、ルーティング イベント ハンドラがアタッチされる要素のメンバ一覧に、処理されているイベントが存在しない場合です。
<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>
サンプル全体については、「ルーティング イベントの処理のサンプル」を参照してください。