Удаление объектов из наблюдаемой коллекции, связанной с сеткой данных Silverlight? - PullRequest
0 голосов
/ 08 февраля 2012

Я получаю сообщение об ошибке при удалении строк из наблюдаемой коллекции, которая связана с сеткой данных в серебряном свете.

System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра object.at в System.Collections.ObjectModel.ObservableCollection`1.RemoveItem (Int32 index)

if (GV.orderItemList.Contains(oOrdritem))
    GV.orderItemList.Remove(oOrdritem);

В первый раз я удаляю запись, она работает нормально, во второй раз выдает указанное выше исключение

enter image description here

пожалуйста, пожалуйста, помогите

Ответы [ 3 ]

1 голос
/ 09 февраля 2012

Проведите нулевую проверку: (или несколько, не уверен, как выглядит остальная часть вашего кода, поэтому я все применяю)

if (GV != null && GV.orderItemList != null && oOrdritem != null && GV.orderItemList.Contains(oOrdritem))
    GV.orderItemList.Remove(oOrdritem);
1 голос
/ 09 февраля 2012

Я решил проблему с помощью кода ниже:

dgOrderItems.CommitEdit(DataGridEditingUnit.Row, true);

Строка, которая была в данный момент сфокусирована, все еще находилась в режиме редактирования, что вызывало исключение.

1 голос
/ 08 февраля 2012

Попробуйте использовать RemoveAt вместо Remove, у меня это сработало в некоторых случаях. Сначала вы найдете индекс элемента с:

int index = collection.IndexOf(item);

затем вы пытаетесь удалить:

collection.RemoveAt(index);
...