将项添加到ILIst作为ListCollectionView的sourcecollection

时间:2017-10-31 10:19:57

标签: wpf data-binding

根据文档,您必须在ListCollectionView的源集合上实现INotifyCollectionChanged以传播集合项的添加/删除。 所以我不明白他的工作方式:

        var parent = new Parent();
        parent.Childs = new List<Child>();
        parent.Childs.Add(new Child());
        parent.Childs.Add(new Child());
        parent.Childs.Add(new Child());
        var view = new ListCollectionView(parent.Childs);

        Assert.AreEqual(3, parent.Childs.Count);
        Assert.AreEqual(3, view.Count);

        parent.Childs.Add(new Child());
        Assert.AreEqual(4, parent.Childs.Count);
        Assert.AreEqual(4, view.Count);

请问,任何人都能解释一下这是如何运作的吗?

1 个答案:

答案 0 :(得分:0)

为什么这不起作用?添加Child项后,您正在断言。 Count属性将始终返回相应的项目数。

您需要实现INotifyCollectionChanged界面的原因是视图能够知道它应该何时刷新UI。

例如,如果将项目添加到要在ListView中显示的数据绑定集合中,则源集合需要将CollectionChanged事件提升为新项目以自动显示在视图中。