Spulciando la documentazione di Silverlight 2.0 ho notato una diversa gestione dei routed events rispetto a WPF che in alcuni casi può modificare il comportamento finale di un applicazione.

Partiamo da questo XAML scritto per WPF:

<Window x:Class="WPF_RoutedEvents.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WPF routed events" Height="288" Width="473">
    <Grid MouseLeftButtonDown="Grid_MouseDown">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" MouseLeftButtonDown="StackPanel_MouseDown">
            <Image HorizontalAlignment="Center" Source="BMP.png" Height="75" />
            <Image HorizontalAlignment="Center" Source="JPG.png" Height="75" />
            <ListBox x:Name="lb" MinWidth="120" MinHeight="100" VerticalAlignment="Center"></ListBox>
            <CheckBox Margin="10,0" x:Name="chkFlag" VerticalAlignment="Center">Handle at stackpanel level</CheckBox>
        </StackPanel>
    </Grid>
</Window>

e relativo code-behind:

private void StackPanel_MouseDown (object sender, MouseButtonEventArgs e)
        {
            lb.Items.Add("Handled by StackPanel");
            e.Handled = (bool)chkFlag.IsChecked;
        }

        private void Grid_MouseDown (object sender, MouseButtonEventArgs e)
        {
            lb.Items.Add("Handled by Grid");
        }

Il risultato è che,cliccando le due immagini, nella listbox vedo apparire le notifiche di entrambi i gestori; dopo avere selezionato la checkbox, l'avere impostato e.Handled=True segnala a WPF di non propagare l'evento al proprio parent e quindi il metodo Grid_MouseDown non viene invocato.
Lo stesso XAML portato in Silverlight 2.0 (notate come, in questo caso, la checkbox esiga la valorizzazione del contenuto attraverso la proprietà Content) ignora l'impostazione di e.Handled e propaga comunque l'evento al proprio parent.

<UserControl x:Class="SL_RoutedEvents.Page"
    xmlns="http://schemas.microsoft.com/client/2007" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="500" Height="300">
    <Grid MouseLeftButtonDown="Grid_MouseDown" Background="Yellow">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" MouseLeftButtonDown ="StackPanel_MouseDown">
            <Image HorizontalAlignment="Center" Source="BMP.png" Height="75" />
            <Image HorizontalAlignment="Center" Source="JPG.png" Height="75" />
            <ListBox x:Name="lb" MinWidth="120" MinHeight="100" VerticalAlignment="Center"></ListBox>
            <CheckBox Margin="10,0" x:Name="chkFlag" Content="Handle at stackpanel level"/>
        </StackPanel>
    </Grid>
</UserControl>

In questo caso è compito del gestore interrogare e.Handled e, se true, determinare che qualcun'altro ha in realtà già gestito lo stesso evento.
A onore di cronaca va detto che anche in WPF è possibile intercettare eventi già marcati con e.Handled usando UIElement.AddHandler e impostando il parametro handledEventsToo a true.