2

ICollectionViewソースと同じインスタンスを 2 つ使用すると問題が発生しますObservableCollection

をフィルタリングするICollectionViewと、もう一方もICollectionView同じフィルタでフィルタリングされているようです。ICollectionViewメソッドでをインスタンス化しますCollectionViewSource.GetDefaultView

これは予想される動作ですか?そうは思いませんが、何かが足りないのかもしれません。

これは、ViewModel のコンストラクターです。

ListaVoci = CollectionViewSource.GetDefaultView(RootVM.CollectionVociCE);

は でListaVociありICollectionViewRootVM.CollectionVociCEObservableCollectionです。この ViewModel の 2 つの異なるインスタンスを持つ 2 つの異なるユーザー コントロールがあります。

これは、ユーザー コントロールのコンストラクターです。

datacontext.ListaVoci.Filter = FiltraListaVoci;

どこFiltraListaVociですか

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

1 に答える 1

2

わかりました、問題を解決しました:) CollectionViewSource.GetDefaultView() を使用して、2つのICollectionViewの両方で同じビューインスタンスを取得し、同じオブジェクトを参照できるようにします。この場合、ICollectionView をインスタンス化する正しい方法は次のとおりです。

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

そのため、コンストラクターが呼び出されるたびに Collectionviewsource オブジェクトを作成します。これが奇妙な副作用につながらないことを願っています:) とにかくありがとう!

于 2011-12-28T10:28:39.503 に答える