2011-12-27 45 views
2

我有一個問題,使用兩個ICollectionView實例具有相同的ObservableCollection作爲源。從單個ObservableCollection過濾兩個ICollectionView

當我篩選ICollectionView時,似乎也使用相同的篩選器篩選其他ICollectionView。我用方法CollectionViewSource.GetDefaultView實例化了ICollectionView

這是預期的行爲?我不這麼認爲,但也許我錯過了一些東西。

這是視圖模型的構造:

ListaVoci = CollectionViewSource.GetDefaultView(RootVM.CollectionVociCE); 

其中ListaVociICollectionViewRootVM.CollectionVociCEObservableCollection。 我有兩個不同的用戶控件,它有兩個不同的ViewModel實例。

這是用戶控制的構造:

datacontext.ListaVoci.Filter = FiltraListaVoci; 

其中FiltraListaVoci

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

你可以分享你的代碼來查看更多的上下文嗎? – bobbymcr

+0

我添加了代碼:) –

+0

您可以添加,作爲您自己的問題的答案並接受它;這對未來的訪問者可能會有所幫助。 – bobbymcr

回答

2

好吧,我解決了這個問題:)與CollectionViewSource.GetDefaultView()我得到了同樣的觀點實例對於兩個ICollectionViews,以便它們引用相同的對象。實例在這種情況下ICollectionView的正確方法是這樣的:

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

所以我創建每當構造被稱爲Collectionviewsource對象。我希望這不會導致一些奇怪的副作用:)無論如何謝謝!