C# 可观测集合和System.ArgumentOutOfRangeException

C# 可观测集合和System.ArgumentOutOfRangeException,c#,wpf,listbox,windows-phone-7.1,observablecollection,C#,Wpf,Listbox,Windows Phone 7.1,Observablecollection,我使用listbox(listbox从可观察的集合中获取项目)获得屏幕,用户可以在其中选择项目 这是显示用户单击项目时发生的情况的代码: // method is invoked when we select the element from the list private void ItemsList_SelectionChanged(object sender, SelectionChangedEventArgs e) { //

我使用listbox(listbox从可观察的集合中获取项目)获得屏幕,用户可以在其中选择项目

这是显示用户单击项目时发生的情况的代码:

 // 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=>invoking方法


我应该如何解决这个问题

为什么不确保列表中存在带有“if语句”的selectedIndex?

我怀疑
列表框
没有选择任何内容,因此
selectedIndex
为-1。只需在条件中检查,不执行代码。是的,我当然应该使用if语句来执行。。谢谢你的帮助,把它写下来作为答案,我会接受它作为答案,是的,我用“如果声明”检查一下,选择的索引不是-1,它可以工作为什么在你的帖子里没有?这不是引发异常的地方吗?你为什么不在那里检查索引?因为我是在你对Steve的回答和评论之后创建的,之前我的代码在post:)中看起来像这样,但它仍然在那里崩溃?不,在添加if(itemList.SelectedIndex!=-1)之后,一切都正常。