У меня есть экран со списком (listbox принимает элементы из наблюдаемой коллекции), где пользователь может выбрать элемент.Наблюдаемая коллекция и система.ArgumentOutOfRangeException
это код, который показывает, что происходит, когда пользователь нажимает на пункте:
// 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);
подчеркнут с этой информацией Исключение типа «System.ArgumentOutOfRangeException» произошло в mscorlib.ni.dll, но не был обработан в пользовательском коде. Эта линия находится в
ItemsList_SelectionChanged
способ.
Было бы идеально, если бы этот метод не был даже вызван, когда я поддерживаю, но мир не идеален. Я думаю, что это работает таким образом, когда мы переходим на другую страницу, которую мы выбрали, например, второй элемент, и когда мы поддерживаем этот экран, этот элемент больше не выбран => selectchanged => метод вызова
Как я должен решить Эта проблема ?
Я подозреваю, что 'ListBox' не имеет ничего, поэтому' SelectedIndex' равно -1. Просто проверьте это в условном выражении и не выполняйте свой код. – Steve
Да, конечно, я должен сделать это с помощью инструкции .. thx для справки, написать ее как ответ, и я бы принял его – MyWay