2

J'ai plusieurs instances de CollectionViewSource toutes utilisées sur le même ObservableCollection. J'ai aussi plusieurs contrôles qui ont besoin d'afficher les versions filtrées de la collection (d'où CollectionViewSources). Le problème que j'ai est que CollectionViewSource les force à avoir le même élément sélectionné. Y a-t-il un moyen de l'éteindre?Pouvez-vous désactiver la synchronisation de la sélection dans CollectionViewSource de WPF?

Merci, Jason Lewis

Répondre

0

Si vous utilisez la méthode (je ne suis pas sûr de cela, mais CollectionViewSource en XAML ne probablement)

CollectionViewSource.GetDefaultView(this.ItemsSource); 

plusieurs fois, il ne retournera le même ICollectionView (si nous parlent de la même collection liée plusieurs fois), cela signifie que si vous appliquez un filtre à celui-ci, il s'appliquera à tous, de même que la vue de collection suit l'élément en cours l'élément courant sera synchronisé entre les différentes vues.

Vous pouvez contourner ce problème en créant un CollectionView pour chaque filtre/sélection que vous voulez avoir en utilisant

new CollectionView(this.ItemsSource as IList); 

il y a quelques types qui mettent en œuvre ICollectionView, CollectionView et ListCollectionView font. Dans le code ci-dessus, je n'ai pas obtenu l'affichage par défaut, j'ai créé un nouveau, de sorte que son filtrage/tri est unique. Lorsque vous utilisez des éléments source wpf crée une vue de collection pour envelopper la collection, cette vue de collection est celle qui est renvoyée dans l'appel GetDefaultView, utile pour les situations de tous les jours mais pas les cas de bordure.

here is a blog post de bea qui explique un peu mieux

+0

Il est en fait pas le filtre, je suis inquiet, je veux qu'ils soient les mêmes. C'est l'élément sélectionné. Je veux juste les avoir tous filtrés de la même manière mais avec des éléments différents sélectionnés. CollectionViewSource synchronise toutes les sélections pour qu'elles soient identiques. Merci pour l'info et je vais jeter un oeil à le faire la CollectionView façon de voir si cela va fonctionner. Je ne pense pas puisque je pourrais avoir un nombre arbitraire de vues. Jason –

+0

principe est le même que CollectionView suit l'élément sélectionné, comme tous les vôtres sont liés à la même vue de collection, tous ont le même élément sélectionné. –

+0

J'avais un peu peur de ça. Eh bien, j'ai trouvé une façon moins élégante mais fonctionnelle de mettre en œuvre ce dont j'avais besoin. Merci pour l'aide Aran. –

Questions connexes