gpt4 book ai didi

c# - 从列表框中删除选定的项目 (ObservableCollection)

转载 作者:行者123 更新时间:2023-12-04 00:44:11 25 4
gpt4 key购买 nike

我正在尝试删除绑定(bind)到 ObservableCollection 的 ListBox 中的选定项目。

var selectedFiles = MyList.SelectedItems;
foreach (cListEntry item in selectedFiles)
{
_myList.Remove(item);
}

"Collection was modified; enumeration operation may not execute"

这样做的正确方法是什么?

最佳答案

从异常本身可以看出,您不能在枚举集合时修改它

解释:

当您从 ObservableCollection 中删除项目时,MyList.SelectedItems 会更新,因为 ObservableCollecton 实现 INotifyCollectionChanged。现在,selectedFiles 指向相同的引用,导致对其进行修改。

解决方案

而是创建一个新列表并对其进行枚举,以便 ObservableCollection 中的任何更改都不会反射(reflect)回您正在枚举的列表。这将起作用:

var selectedFiles = MyList.SelectedItems.Cast<object>().ToList();
foreach (cListEntry item in selectedFiles)
{
_myList.Remove(item);
}

关于c# - 从列表框中删除选定的项目 (ObservableCollection),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21220467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com