我正在尝试删除绑定到ObservableCollection的ListBox中的选定项目。
var selectedFiles = MyList.SelectedItems;
foreach (cListEntry item in selectedFiles)
{
_myList.Remove(item);
}
“集合已修改;枚举操作可能无法执行”
正确的做法是什么?
从异常本身可以明显看出来的同时,您不能修改集合。
说明:
当您从ObservableCollection中删除项目时,由于ObservableCollecton实现了INotifyCollectionChanged,因此MyList.SelectedItems得到更新。现在,selectedFiles指向相同的引用,从而导致对其进行修改。
解
而是创建一个新列表并对其进行枚举,以使ObservableCollection中的任何更改都不会反映回您正在枚举的列表。这将起作用:
var selectedFiles = MyList.SelectedItems.Cast<object>().ToList();
foreach (cListEntry item in selectedFiles)
{
_myList.Remove(item);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句