删除observablecollection的行为

时间:2015-10-15 09:55:31

标签: c# .net wpf visual-studio

我在尝试从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; }
}

enter image description here

2 个答案:

答案 0 :(得分:1)

问题非常简单......我在remove方法的for循环中增加i两次。

答案 1 :(得分:0)

Your Children属性会返回该集合的副本,因此您要从副本中删除项目,而不是从原始集合中删除。

更改您的代码
get { return new ObservableCollection<ITreeContentItem>(Children); }

get { return Children; }