Фильтрация двух ICollectionView из одного ObservableCollection - PullRequest
2 голосов
/ 27 декабря 2011

У меня проблема с использованием двух ICollectionView экземпляров, которые имеют ObservableCollection в качестве источника.

Когда я фильтрую ICollectionView, кажется, что и другой ICollectionView фильтруется тем же фильтром. Я создаю экземпляр ICollectionView с помощью метода CollectionViewSource.GetDefaultView.

Это ожидаемое поведение? Я так не думаю, но, может быть, я что-то упустил.

Это конструктор ViewModel:

ListaVoci = CollectionViewSource.GetDefaultView(RootVM.CollectionVociCE);

, где ListaVoci - это ICollectionView, а RootVM.CollectionVociCE - это ObservableCollection. У меня есть два разных пользовательских элемента управления, которые имеют два разных экземпляра этой модели представления.

Это конструктор пользовательского элемента управления:

datacontext.ListaVoci.Filter = FiltraListaVoci;

, где FiltraListaVoci равно

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

1 Ответ

2 голосов
/ 28 декабря 2011

Хорошо, я решил проблему :) с CollectionViewSource.GetDefaultView () Я получаю один и тот же экземпляр представления для обоих ICollectionView, так что они ссылаются на один и тот же объект. Правильный способ создания экземпляра ICollectionView в этом случае заключается в следующем:

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

Поэтому я создаю объект Collectionviewsource всякий раз, когда вызывается конструктор. Я надеюсь, что это не приведет к некоторым странным побочным эффектам :) В любом случае, спасибо!

...