2

同じ ObservableCollection ですべて使用されるいくつかの CollectionViewSource インスタンスがあります。コレクションのフィルタリングされたバージョンを表示する必要があるいくつかのコントロールもあります (したがって CollectionViewSources)。私が抱えている問題は、 CollectionViewSource がそれらすべてに同じアイテムを選択させることです。これをオフにする方法はありますか?

ありがとう、ジェイソン・ルイス

4

1 に答える 1

0

メソッドを使用する場合(これについてはよくわかりませんが、xamlのCollectionViewSourceはおそらく使用します)

CollectionViewSource.GetDefaultView(this.ItemsSource);

複数回は同じICollectionViewのみを返します(同じコレクションが複数回バインドされている場合)。これは、フィルターを適用すると、コレクションビューが現在のアイテムを追跡するため、現在のアイテムがすべてに適用されることを意味します。異なるビュー間で同期されます。

これを回避するには、次を使用して、必要なフィルター/選択ごとにCollectionViewを作成します。

new CollectionView(this.ItemsSource as IList);

ICollectionView、CollectionView、およびListCollectionViewを実装するいくつかのタイプがあります。上記のコードでは、新しいビューを作成したデフォルトのビューを取得できなかったため、そのファイリング/ソートは一意です。

アイテムを使用する場合、ソースwpfはコレクションビューを作成してコレクションをラップします。このコレクションビューは、GetDefaultView呼び出しで返されるビューであり、日常の状況では役立ちますが、エッジケースでは役立ちません。

これは、 beaからのブログ投稿で、もう少し詳しく説明しています。

于 2010-02-10T00:46:49.687 に答える