Cela dépend du comportement souhaité. Par exemple. Si vous aviez plusieurs listes d'états à l'écran et que vous vouliez les filtrer tous par région en même temps, cela pourrait être un comportement souhaité. Vous pouvez toujours forcer une source de vue différente dans les cas où vous ne souhaitez pas que les éléments soient liés aux mêmes critères de filtre. Je pense qu'éviter l'utilisation de CollectionViewSource jusqu'à ce que vous compreniez les interactions des commandes ItemsSource -> CollectionView -> Bound Item est probablement une bonne idée, mais je ne sais pas si j'irais jusqu'à dire que vous devriez évitez-le en général. Je pense qu'il peut être raisonnable de dire que si deux listes d'un formulaire ont différentes exigences de filtrage/tri, elles doivent être liées à des propriétés source différentes (même si ces propriétés sont des clones droits d'une source sous-jacente unique). De cette façon, vous pouvez toujours appliquer le filtrage et le stockage au niveau de CollectionViewSource mais sans conséquences inattendues plus tard.
Vous avez parfaitement compris mon point de vue, et c'est la grande question: si les utilisateurs de MyControl tolèrent que chaque contrôle a sa propre DataSource bien que ces sources soient un clone identique. Pensons à la liste des personnes qui doit être ajoutée à DynamicSource. Cela résout vraiment le problème, mais la question est: est-ce acceptable à votre avis? –
Si vous développez un contrôle pour les autres, je suppose que vous voudriez leur cacher cette complexité. Je me lierais probablement à une collection 'CollectionViewSource' personnalisée dans vos propres liaisons. Pour limiter votre propre complexité de code, vous pouvez définir 'CollectionViewSource's dans la section de ressource de votre contrôle, tous liés à la même source externe, puis lier vos contrôles d'éléments individuels au' CollectionViewSource' approprié. –