Bea déclare utiliser CollectionViewSource.GetDefaultView()
comme favorite way for accessing the view d'une collection donnée. En outre, je n'ai personnellement jamais rencontré de problèmes en utilisant le CollectionViewSource.GetDefaultView()
mais il est certainement possible dans un scénario donné.
Vous devez comprendre que chaque collection a une vue par défaut et que lorsque vous liez une propriété donnée à une collection donnée, WPF encapsule automatiquement la collection avec une vue et la lie à la vue; pas la collection. Étant donné que cela fait partie du cadre WPF, vous devez alors supposer que chaque collection ayant une vue qui lui est associée sera ensuite éliminée lorsque la collection sera éliminée. S'il y a une référence à la collection via une propriété bindable, il y a alors une vue associée référençant la collection si vous faites un appel à CollectionViewSource.GetDefaultView()
ou non, donc vous seriez toujours dans la même situation.
Empirique evidence existe que jusqu'à ce que la collection est hors de portée les vues associées ne seront pas GC'ed; Cependant, gardez à l'esprit qu'il s'agissait d'une collection avec des outils INotifyCollectionChanged
.
Sur la base de votre situation une relation 1: 1 entre la collecte et la vue associée peut exister et donc le couplage peut fournir aucun obstacle que ce soit. Dans ce scénario, la vue GC'ed une fois que la collection est hors de portée n'est pas un problème.
Il s'agit de marcher avec précaution et de s'assurer que vous savez ce qui se passe sous les couvertures pour les situations plus complexes afin que vous puissiez prendre les mesures appropriées.