0

アイテムでいっぱいのリストボックスがあります。一部のアイテムには、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 に答える