从单个ObservableCollection过滤两个ICollectionView

时间:2011-12-27 10:14:05

标签: wpf observablecollection icollectionview

我使用两个与ICollectionView相同的ObservableCollection个实例时遇到问题。

当我过滤ICollectionView时,似乎另一个ICollectionView也使用相同的过滤器进行过滤。我使用方法ICollectionView实例化CollectionViewSource.GetDefaultView

这是预期的行为吗?我不这么认为,但也许我错过了什么。

这是ViewModel的构造函数:

ListaVoci = CollectionViewSource.GetDefaultView(RootVM.CollectionVociCE);

其中ListaVociICollectionViewRootVM.CollectionVociCEObservableCollection。 我有两个不同的用户控件,它们有两个不同的ViewModel实例。

这是用户控件的构造函数:

datacontext.ListaVoci.Filter = FiltraListaVoci;

其中FiltraListaVoci

public bool FiltraListaVoci(object filter)
{
    // I make some filtering
}

1 个答案:

答案 0 :(得分:2)

好的,我用CollectionViewSource.GetDefaultView()解决了问题:)我为两个ICollectionViews获取了相同的视图实例,以便它们引用相同的对象。在这种情况下,实例化ICollectionView的正确方法是:

CollectionViewSource cvs = new CollectionViewSource();
cvs.Source = RootVM.CollectionVociSP;
ListaVoci = cvs.View;

因此,每当调用构造函数时,我都会创建一个Collectionviewsource对象。我希望这不会导致一些奇怪的副作用:)无论如何,谢谢!