0

我有一个装满项目的 ListBox。一些项目可能在 RichTextBlock 内部有按钮或链接。我想在按下项目或按下按钮时触发不同的动作。问题是当我按下按钮时,与项目本身相关的动作也会被触发。当按下内部按钮时,如何防止触发列表项事件?

列表框:

<ListBox x:Name="StripesList" SelectionChanged="StripesList_SelectionChanged">
</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);
4

1 回答 1

1

在所有事件的处理程序中设置 e.Handled=true 。它将停止事件的冒泡。

于 2012-07-27T17:05:08.390 回答