4

C#と を使用して Windows ストア アプリケーションを開発していますXAML。を使用してListViewデータのコレクションを表示しています。

内部ListViewには、グリッドとグリッド内の TextBlock を持つデータ テンプレートがあります。TextBlock をタップ/クリックして、選択したアイテムListViewを処理するイベントが既にあるため、親アイテムを選択せず​​にアクションを実行したいListView。両方を重ねたくない。

ご回答ありがとうございます。

4

1 に答える 1

0

ListViewItemそのため、その一部をタップしたときに を選択できるようにしたいのですが、 TextBlock?は選択できません。この場合、TextBlockTappedイベントに を追加しe.Handled = true;ます。これにより、親までルーティングされないようにする必要がありListViewます。

他にできること (これは、ListViewItems でやりたいことに対するより一般的な解決策になる可能性があります) は、thingイベントを使用せ、代わりにすべてを で処理することです。その後、イベントの が実際にあなたの であるかどうかを推測できます。次に、 でない場合は、親のを​​変更します。SelectionChangedItemClickOriginalSourceTextBlockTextBlockListViewSelectedItem

OriginalSource を確認する例

public static void ItemClickEvent(object sender, ItemClickEventArgs e)
{
    if(e.OriginalSource is TextBlock)
        DoNothingOrMaybeTextBlockEvent();
    else
    {
        ListView.SelectedItem = e.ClickedItem;
    }
}

お役に立てれば。

編集:OriginalSourceチェックのサンプルコードを追加

于 2013-07-11T16:10:02.090 に答える