3

私の Windows Phone 7 アプリケーションには、多数のリスト ビューがあります。各 listViewItem にはクリック イベントがあります (xaml の listBox に「selectionChanged」属性を設定することにより)。ここで、非常に奇妙なことが起こります。

最初にすべてがうまくいったときにリストボックス内の項目をクリックすると、この場合、ユーザーは別の画面に移動します。その画面からリストボックスに戻ると、まったく同じリストボックスアイテムを選択しますが、今回はイベントが登録されず、何も起こりません...

次に、最初に別のアイテムをタップする必要があり、そのアイテムを起動させてから、最初のアイテムのみをタップできます。つまり、listItem のクリック イベントを 2 回続けて発生させることはできません。リストボックスのイベントハンドラーが「onSelectionChanged」と言っているためだと思います。同じ項目を選択すると、選択は技術的に変更されていません。

では、リストボックスでアイテムの選択イベントを登録するために、他にどの eventHandling 属性を使用できますか?

助けてくれてありがとう!

4

2 に答える 2

3

あなたの場合、ListBox の SelectedItem が初めて設定されます。同じアイテムを 2 回目にタップすると、技術的には SelectionChanged イベントではないため、発生しません。

SelectionChanged イベントの最後に SelectedItem をクリアすると、うまくいきます。
以下は参考になるコードスニペットです。

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    //
    // do your stuff here
    //

    //reset the selection of the sender (ListBox)
    (sender as ListBox).SelectedItem = null;
}
于 2012-11-30T15:39:11.930 に答える
3

知る限り、そのようなイベントはありません。したがって、回避策は、

最初のページの OnNavigatedTo イベント ハンドラーで、SelectedIndex を -1 に設定します。

YourListBox.SelectedIndex = -1;

そうしている間に、Selection_Changed ハンドラーに小さな変更を加えます。

void Selection_Changed(...)
{
   if(YourListBox.SelectedIndex == -1)
    return;
   //rest of your code
}
于 2012-11-30T09:42:57.957 に答える