我得到了带有列表框的屏幕(列表框从可观察集合中获取项目),用户可以在其中选择项目。
这是显示用户点击项目时会发生什么的代码:
// method is invoked when we select the element from the list
private void ItemsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// getting object which was clicked in the listbox
dbFoodTable item = Fooditems.ElementAt(ItemsList.SelectedIndex);
// mark this object as choosenMeal and store it to get it back in next page
PhoneApplicationService.Current.State["choosen"] = item;
//going to next page
NavigationService.Navigate(new Uri("Customization.xaml", UriKind.Relative));
}
当我从列表框中选择项目时,我转到下一个屏幕,其中包含此项目的所有详细信息(如奖品,说明,名称...),当我回到此列表框屏幕时,错误显示。
这一行
dbFoodTable item = Fooditems.ElementAt(ItemsList.SelectedIndex);
带有此信息的下划线mscorlib.ni.dll中出现“System.ArgumentOutOfRangeException”类型的异常,但未在用户代码中处理。这一行在
中ItemsList_SelectionChanged
方法
如果我支持这种方法甚至不被调用,那将是完美的,但是世界并不完美。 我认为它以这种方式工作,当我们转到我们选择的其他页面例如第二项时,当我们支持这个屏幕时,不再选择该项目=> selectionchanged =>调用方法
我该如何解决这个问题?
答案 0 :(得分:1)
为什么不确保列表中的selectedIndex带有“if语句”?