これは、内部コントロールのイベント ハンドラーが e.Handled プロパティを true に設定した場合に発生する可能性があります。これにより、ルーティング イベントがそれ以上バブリングするのを防ぐことができます。しかし、確認したところ、WPF 4 ではその動作が見られません。
e.Handled がイベントを妨げている場合、できることは、ブール値の handlerEventsToo パラメータを受け取るUIElement.AddHandlerオーバーロードを使用して、クリック イベントをフックすることです。これは、マークアップではなく、コードで行う必要があります。次に、外側のコントロールで Click イベントを受け取る必要があり、e.Handled プロパティは既に true に設定されています。
次のコードは、内側のボタンをクリックしたときに両方のボタンの背景を設定します。
<Grid>
<Button VerticalAlignment="Center" HorizontalAlignment="Center" Click="Click1">
<Button Width="100" Height="25" Margin="20" Click="Click2" />
</Button>
</Grid>
コードビハインド
private void Click1( object sender, RoutedEventArgs e )
{
( (Button)sender ).Background = new SolidColorBrush( Colors.Blue );
}
private void Click2( object sender, RoutedEventArgs e )
{
( (Button)sender ).Background = new SolidColorBrush( Colors.Red );
//e.Handled = true; // uncomment to stop bubbling
}