2011-01-10 11 views
3

私はリストボックスを持つWindows Phone 7アプリを書いています。 ListBoxのアイテムが指で「クリック」または「ヒット」された場合、それをトラップする正しいイベントは何ですか?Windows Phone 7のListBoxで「クリック」をキャプチャする正しいイベントは何ですか?

私は "SelectedIndexChanged"を試しましたが、アプリがTombStonedで0のインデックスが渡されたときにGoBack()で発生するようです(奇妙に見えます)。

私は現在、このトリックを行うように見えるMouseUpを使用しています。しかし、それが正しいかどうかは分かりません。

注:クリックすると、SelectionChangedが発砲した理由がわかりました。私のページのコンストラクタが起動し、ListBoxのItemSouceが設定されているとき(データバインド)、リストの最初の項目を選択してSelectionChanvedイベントを発生させます。これはユーザーの操作によって開始されたものではないため、IsLoadedブール値を作成し、そのItemSourceをコンストラクターに設定してイベントでその値を確認した後にtrueに設定することで解決しました。

+0

[リストのクリック動作はありますか?](http://stackoverflow.com/questions/4637793/is-there-a-click-behavior-for-a-list) –

+0

こんにちはOmar、上記のスレッドはMouseUpに関する考慮事項をカバーし、同じリスト項目を繰り返しクリック/タップします。 –

+0

... SelectedIndexを最初にリセットすることなく、人々が通常SelectedIndexChanged(繰り返し押すことはできません)の問題に対処します。 –

答えて

2

アイテムが選択されたときに通知を受けたい場合は、SelectionChangedイベントをキャッチする必要があります。 ()あなたはおそらくe.AddedItemsでe.RemovedItemsコレクションが、何のアイテムを持っているのGoBackで

void SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (e.AddedItems.Count == 1) 
    { 
     // .. do something 
    } 
} 

:ハンドラで

あなたはe.AddedItemsは正確に一つの項目が含まれていることを確認してください。

+0

私はこのメカニズムで見つけた1つは、リストボックスのItemSourceが(コンストラクタのように)更新されたときにSelectionChangedが発生することです。その場合のSelectedIndexは、そのリストの最初の項目です。 –

+2

私の場合と同じように、あなたは決して物事を選択する必要はなく、それらをクリック可能にしたい場合は、完了したらSelectedIndexを-1に戻してください。さもなければ、同じ物を2回クリックするだけで何もしません。 –

+0

HI Chris R、selectedIndexを-1に戻すと、SelectionChangedイベントが再度実行されます(selectedIndexを-1に設定すると、もう一度SelectionChangeになります)。したがって、このイベントはリストボックス項目のクリックごとに2回実行されます。したがって、リストボックスアイテムのクリックイベントを実装するのに最適なイベントはどれですか?私はタップイベント(リストボックス)を試して、そのアイディアを知りたいと思っています。どうもありがとうございました... – JibW

関連する問題