Observable Collection和System.ArgumentOutOfRangeException

时间:2014-01-11 13:28:44

标签: c# wpf listbox windows-phone-7.1 observablecollection

我得到了带有列表框的屏幕(列表框从可观察集合中获取项目),用户可以在其中选择项目。

这是显示用户点击项目时会发生什么的代码:

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

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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