3

オブジェクトのList<>にバインドされたデータを含むListBoxがあります。ListBox_SelectionChangedイベントで、選択したインデックスがList<>の最後の項目であるかどうかを確認しています。selectedIndexが最後のアイテムである場合、そのアイテムを削除し、Webサービスを呼び出してリストにさらにアイテムを追加します。しかし、selectedIndexが最後の項目でない場合は、ページに移動します。私の問題は、selectedTndexが最後のアイテムである場合、最後のアイテムを削除しますが、selectedIndexが最後のアイテムであるかどうかを確認する同じ「if」状態に再び戻ります。したがって、私のサービスを呼び出す代わりに、次のページに移動します。なぜif()条件を再度呼び出すのか、そしてそれをどのように処理するのか、誰か教えてもらえますか?

4

2 に答える 2

1

リストボックスからアイテムを削除すると、彼(ListBoxコントロール)が前のアイテムを自動的に選択し、これによりSelectionChangedイベントが発生すると思います。そのため、前にこのイベントからサブスクライブを解除できます (疑似コードで):

bool isLast = ... ;
if (isLast)
{
   listBox.SelectionChanged -= OnSelectionChanged;
   Remove(item);
   listBox.SelectionChanged += OnSelectionChanged;
}

そのため、アイテムを削除しても、このイベントは再び発生しません。また、選択をクリアしたい場合があります:

listBox.SelectedIndex = -1;
于 2013-01-16T12:23:47.387 に答える
0

たぶん、リストボックスをクリアして再度ロードすると、役立つでしょう。

于 2013-01-16T12:22:28.980 に答える