我遇到此代码的问题。基本上ProfileControl
是自定义控件,profileList
是ListBox
而profileCollection
是ObservableCollection
。
foreach (ProfileControl item in profileList.SelectedItems)
{
profileCollection.Remove(item);
}
代码工作正常,但我收到了消息:
集合被修改枚举操作可能无法执行。
请告诉我,谢谢。
答案 0 :(得分:1)
我相信profileList
必然会profileCollection
。因此,当您致电profileCollection.Remove
时,数据绑定引擎会更新profileList.SelectedItems
集合以保持同步。
foreach无法可靠地处理迭代时正在修改的集合。您可以制作profileList.SelectedItems
的副本并对其进行迭代。
var selectedItems = profileList.SelectedItems
.Cast<ProfileControl>()
.ToList();
foreach (ProfileControl item in selectedItems)
{
profileCollection.Remove(item);
}
答案 1 :(得分:0)
解决方案是将其转换为List:
foreach (ProfileControl item in profileList.SelectedItems.ToList())
实际上,您正在删除当前正在浏览的列表中的项目...