3

我有一个 ListBox,其中的数据绑定到一个 List<> 对象。在 ListBox_SelectionChanged 事件中,我正在检查所选索引是否是 List<> 的最后一项。如果 selectedIndex 是最后一个项目,那么我想删除该项目并调用我的 Web 服务以将更多项目添加到列表中。但是如果 selectedIndex 不是最后一项,我想导航到一个页面。我的问题是,如果 selectedTndex 是最后一项,它会删除最后一项,但它再次回到相同的“如果”条件,我检查 selectedIndex 是否是最后一项。因此,它不会调用我的服务,而是导航到下一页。谁能告诉我为什么它再次调用 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 回答