当新项添加到其内部的ObservableCollection时,如何刷新ICollectionView

时间:2015-12-30 09:41:13

标签: wpf datagridview observablecollection icollectionview

请参阅下面的代码

private ObservableCollection<Person> testList = new ObservableCollection<Person>();

    public ObservableCollection<Person> TestList
    {
        get { return testList; }
        set
        {
            if (testList != value)
            {
                testList = value;
                SetProperty<ObservableCollection<Person>>(ref testList, value);
            }
        }
    }

    private ListCollectionView personListView;

    public ICollectionView PersonListView
    {
        get
        {
            if (personListView == null)
            {
                personListView = new ListCollectionView(TestList)
                {
                    Filter = p => FilterPerson((Person)p)
                };
            }
            return personListView;
        }

    }

我想知道如何在将新项目插入TestList时更新PersonListView并刷新UI,或者重新分配整个TestList?我试过在TestList set方法中调用Refresh方法,但是当一个新项插入到集合中时,不会调用set方法。

由于

1 个答案:

答案 0 :(得分:0)

我认为你可以将一个集合更改事件添加到TestList observable集合中并过滤其中的PersonListView。

     TestList.CollectionChanged += TestList_CollectionChanged;

     void TestList_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
            {
                if (e.NewItems != null)
                {
                    /// Filter the PersonListView
                }
            }