我在尝试从Children Collection中删除元素时遇到了奇怪的行为。正如你可以看到第一次执行remove方法时,count是8(没有改变),但如果我进入remove方法,元素就会被删除。
发生了什么事? (希望图片中包含的代码足以得到关于它的线索,如果没有,请询问更多细节)
编辑:我已根据答案中的建议稍微更改了一个界面,但问题仍然存在。这也会导致实施方面的一些变化(请注意图像上的红色打击,对涂料技巧感到抱歉)。
public interface ITreeContentItem
{
string Name { get; set; }
int Id { get; set; }
int Level { get; }
ITreeContentItem Parent { get; set; }
IEnumerable<ITreeContentItem> Children { get; }
bool ChangeParent(ITreeContentItem parent);
Thickness Border { get; }
}
答案 0 :(得分:1)
问题非常简单......我在remove方法的for循环中增加i
两次。
答案 1 :(得分:0)
Your Children属性会返回该集合的副本,因此您要从副本中删除项目,而不是从原始集合中删除。
从
更改您的代码get { return new ObservableCollection<ITreeContentItem>(Children); }
到
get { return Children; }