У меня есть ObservableCollection, который привязан к ItemsControl, как к ItemsSource (режим TwoWay). Для какой-то странной проблемы прокрутки мне пришлось придумать взломать все элементы из этой коллекции, прежде чем устанавливать ее снова. Потому что, если я переустановил эту коллекцию, я столкнулся с этой проблемой прокрутки (которая не стоит объяснять здесь, я полагаю). Так вот что я делаю:Ошибка HRESULT E_FAIL была возвращена из вызова COM-компонента при удалении элементов из ObservableCollection
var itemsToRemove = MyCollection.ToList();
foreach (var itemToRemove in itemsToRemove)
{
MyCollection.Remove(itemToRemove);
}
// Add items to the collection
Я получаю эту ошибку при попытке удалить элементы из этой коллекции: Error HRESULT E_FAIL has been returned from a call to a COM component
. Это происходит только в том случае, если коллекция является относительно большой (более 10 элементов), и это не происходит для самого первого элемента, но для некоторого элемента в середине коллекции (возможно, это связано с привязкой?).
Примечание: я не могу использовать MyCollection.Clear()
, так как это приводит к той же проблеме прокрутки, с которой я пытаюсь работать.
Я не очень уверен, если я понимаю, что вы только что сказали. Некоторый код был бы оценен. Благодарю. – tavier
отредактировал мой ответ –
Он дает «System.ArgumentOutOfRangeException», поскольку та же коллекция изменяется (при удалении элементов). Поэтому в следующий раз, когда он войдет внутрь, чтобы удалить элемент в индексе say 2, элемент, возможно, был перенесен в индекс 1. Я исправлю это и посмотрю, работает ли это. – tavier