同じ ObservableCollection ですべて使用されるいくつかの CollectionViewSource インスタンスがあります。コレクションのフィルタリングされたバージョンを表示する必要があるいくつかのコントロールもあります (したがって CollectionViewSources)。私が抱えている問題は、 CollectionViewSource がそれらすべてに同じアイテムを選択させることです。これをオフにする方法はありますか?
ありがとう、ジェイソン・ルイス
同じ ObservableCollection ですべて使用されるいくつかの CollectionViewSource インスタンスがあります。コレクションのフィルタリングされたバージョンを表示する必要があるいくつかのコントロールもあります (したがって CollectionViewSources)。私が抱えている問題は、 CollectionViewSource がそれらすべてに同じアイテムを選択させることです。これをオフにする方法はありますか?
ありがとう、ジェイソン・ルイス
メソッドを使用する場合(これについてはよくわかりませんが、xamlのCollectionViewSourceはおそらく使用します)
CollectionViewSource.GetDefaultView(this.ItemsSource);
複数回は同じICollectionViewのみを返します(同じコレクションが複数回バインドされている場合)。これは、フィルターを適用すると、コレクションビューが現在のアイテムを追跡するため、現在のアイテムがすべてに適用されることを意味します。異なるビュー間で同期されます。
これを回避するには、次を使用して、必要なフィルター/選択ごとにCollectionViewを作成します。
new CollectionView(this.ItemsSource as IList);
ICollectionView、CollectionView、およびListCollectionViewを実装するいくつかのタイプがあります。上記のコードでは、新しいビューを作成したデフォルトのビューを取得できなかったため、そのファイリング/ソートは一意です。
アイテムを使用する場合、ソースwpfはコレクションビューを作成してコレクションをラップします。このコレクションビューは、GetDefaultView呼び出しで返されるビューであり、日常の状況では役立ちますが、エッジケースでは役立ちません。
これは、 beaからのブログ投稿で、もう少し詳しく説明しています。