Botón en el elemento ListBox

Tengo un ListBox lleno de artículos. Algunos de los elementos pueden tener botones o enlaces dentro de RichTextBlock. Quiero disparar una acción diferente cuando se presiona el elemento o cuando se presiona el botón. El problema es que cuando presiono el botón, también se activa la acción relacionada con el elemento en sí. ¿Cómo puedo evitar que se dispare el evento del elemento de la lista cuando se presiona el botón interior?

Cuadro de lista:

<ListBox x:Name="StripesList" SelectionChanged="StripesList_SelectionChanged">
</ListBox>

Elementos del cuadro de lista:

<Border x:Name="OuterBorder" Width="400">
    <Image x:Name="ThumbnailBox" Width="100" Source="{Binding Thumbnail}" Tap="ThumbnailClick" />
</Border>    

Código:

private void StripesList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (StripesList != null)
    {
        StripesList.SelectedIndex = -1;
    }
}

private void ThumbnailClick(object sender, System.Windows.Input.GestureEventArgs e)
{
    Image image = sender as Image;
    // handle image click
}

private void ItemClick(object sender, EventArgs e)
{
    // handle item click
}

Registro observadores de eventos de clics de elementos desde el código subyacente:

item.Tap += new EventHandler(ItemClick);

preguntado el 27 de julio de 12 a las 17:07

¿Puede incluir el XAML de su ListBox y el código de sus eventos en su pregunta? -

1 Respuestas

establezca e.Handled=true en el controlador de todos los eventos. Detendrá el burbujeo del evento.

Respondido 27 Jul 12, 18:07

OK, funciona para Image. Pero también quiero tener el mismo efecto para los hipervínculos dentro de RichTextBox, y RoutedEventArgs que activa no tiene la propiedad Handled (para WP7) - marc andreson

No sé eso, en ese caso, al comienzo de su controlador, verifique la fuente como en el controlador ListBox, verifique si e.Source es Button y luego simplemente regrese o si es ListBox y luego continúe. - yo chauhan

Estupendo ! Funciona, puedo determinar la fuente como dijiste usando la propiedad .OriginalSource. ¡Gracias! - marc andreson

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.