This can happen if the event handler of the inner control sets the e.Handled property to true. This would prevent the routed event from bubbling any further. But I just checked and I do not see that behavior in WPF 4.
If e.Handled is preventing your event, what you can do however is use the UIElement.AddHandler overload that takes a boolean handledEventsToo parameter to hook up your click event. This has to be done in code, not markup. Then you should receive the Click event in the outer control and the e.Handled property will already be set to true.
The following code does set the background of both buttons when I click the inner button.
<Grid>
<Button VerticalAlignment="Center" HorizontalAlignment="Center" Click="Click1">
<Button Width="100" Height="25" Margin="20" Click="Click2" />
</Button>
</Grid>
Code Behind
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
}