2

我在使用两个与源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
}
4

1 回答 1

2

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

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

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

于 2011-12-28T10:28:39.503 回答