当源更改时,CollectionViewSource不会更新

时间:2017-12-12 11:31:14

标签: c# mvvm collectionviewsource

我使用集合视图来过滤,分组和排序我的项目但是当我在源中删除或添加组件时,视图不会更新。

来源:

public ObservableCollection<Component> Components
{
    get
    {
        return mComponents;
    }
}

CollectionViewSource:

this.ComponentCollection = new CollectionViewSource();
this.ComponentCollection.Source = this.Components;
this.ComponentCollection.GroupDescriptions.Clear();
this.ComponentCollection.GroupDescriptions.Add(new PropertyGroupDescription("Template.ComponentType"));
this.ComponentCollection.SortDescriptions.Clear();
this.ComponentCollection.SortDescriptions.Add(new System.ComponentModel.SortDescription("Name", System.ComponentModel.ListSortDirection.Ascending));
this.ComponentCollection.Filter += this.Filter;

在视图中添加或删除组件的唯一方法是重新应用源:

this.ComponentCollection.Source = this.Components;
this.ComponentCollection.View.Refresh();

这是我使用CollectionViewSource的方式:

ItemsSource="{Binding Path=ComponentTemplateCollection.View.Groups}"

我对过滤集合没有任何问题,这很好用但是当我从组件this.Components.Remove(x)删除或添加内容时它什么也没做。

1 个答案:

答案 0 :(得分:0)

显然某些mComponents被覆盖了,这是集合视图源的问题。然而,提高房产变无所作为。我还需要在调度程序中调用add和remove。