我使用两个与ICollectionView
相同的ObservableCollection
个实例时遇到问题。
当我过滤ICollectionView
时,似乎另一个ICollectionView
也使用相同的过滤器进行过滤。我使用方法ICollectionView
实例化CollectionViewSource.GetDefaultView
。
这是预期的行为吗?我不这么认为,但也许我错过了什么。
这是ViewModel的构造函数:
ListaVoci = CollectionViewSource.GetDefaultView(RootVM.CollectionVociCE);
其中ListaVoci
是ICollectionView
而RootVM.CollectionVociCE
是ObservableCollection
。
我有两个不同的用户控件,它们有两个不同的ViewModel实例。
这是用户控件的构造函数:
datacontext.ListaVoci.Filter = FiltraListaVoci;
其中FiltraListaVoci
是
public bool FiltraListaVoci(object filter)
{
// I make some filtering
}
答案 0 :(得分:2)
好的,我用CollectionViewSource.GetDefaultView()解决了问题:)我为两个ICollectionViews获取了相同的视图实例,以便它们引用相同的对象。在这种情况下,实例化ICollectionView的正确方法是:
CollectionViewSource cvs = new CollectionViewSource();
cvs.Source = RootVM.CollectionVociSP;
ListaVoci = cvs.View;
因此,每当调用构造函数时,我都会创建一个Collectionviewsource对象。我希望这不会导致一些奇怪的副作用:)无论如何,谢谢!