2011-12-27 2 views
2

ObservableCollection이 소스 인 두 개의 ICollectionView 인스턴스를 사용하는 데 문제가 있습니다.하나의 ObservableCollection에서 두 개의 ICollectionView 필터링

ICollectionView을 필터링하면 ICollectionView도 같은 필터로 필터링됩니다. CollectionViewSource.GetDefaultView 메서드를 사용하여 ICollectionView을 인스턴스화합니다.

이것은 예상되는 동작입니까? 나는 그렇게 생각하지 않지만 어쩌면 나는 뭔가를 놓치고있다.

ListaVoci = CollectionViewSource.GetDefaultView(RootVM.CollectionVociCE); 

ListaVociICollectionViewRootVM.CollectionVociCEObservableCollection이다 :

는 뷰 모델의 생성자이다. 이 ViewModel의 두 인스턴스가 다른 두 개의 사용자 정의 컨트롤이 있습니다.

datacontext.ListaVoci.Filter = FiltraListaVoci; 

FiltraListaVoci, 나는 내가 같은보기 인스턴스를 가져) CollectionViewSource.GetDefaultView (로 : 문제를 해결

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

더 많은 컨텍스트를 보려면 코드를 공유 할 수 있습니까? – bobbymcr

+0

코드를 추가했습니다 :) –

+0

당신은 자신의 질문에 대한 대답으로 그것을 추가하고 그것을 수락 할 수 있습니다; 미래의 방문자에게 도움이 될 수 있습니다. – bobbymcr

답변

2

좋아입니다 :

은 사용자 컨트롤의 생성자 두 ICollectionView에 대해 동일한 객체를 참조하도록합니다. 이 경우 ICollectionView에 인스턴스화하는 올바른 방법은 이것이다 :
CollectionViewSource cvs = new CollectionViewSource(); 
cvs.Source = RootVM.CollectionVociSP; 
ListaVoci = cvs.View; 

그래서 내가 생성자가 호출 될 때마다 Collectionviewsource 개체를 만듭니다. 나는 이것이 이상한 부작용으로 이어지지 않기를 바랍니다 :) 어쨌든 고맙습니다!