我有一个填充了项目的ListBox。某些项目内部可能包含RichTextBlock中的按钮或链接。我想在按下项目或按下按钮时触发不同的动作。问题是当我按下按钮时,也会触发与项目本身相关的动作。当按下内部按钮时,如何防止触发列表项的事件?
列表框:
<ListBox x:Name="StripesList" SelectionChanged="StripesList_SelectionChanged">
</ListBox>
ListBox项目:
<Border x:Name="OuterBorder" Width="400">
<Image x:Name="ThumbnailBox" Width="100" Source="{Binding Thumbnail}" Tap="ThumbnailClick" />
</Border>
代码:
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
}
我从后面的代码注册项目点击事件观察者:
item.Tap += new EventHandler(ItemClick);
答案 0 :(得分:1)
在所有事件的处理程序中设置e.Handled = true。它将阻止事件的泡沫化。