Question

Je suis en train de comprendre l'approche de conception MVVM de base lors de l'utilisation ItemsControl par liaison via DataTemplates ObservableCollections sur le ViewModel.

J'ai vu des exemples qui se lient à ObservableCollections de chaînes , Vues et ViewModels .

La liaison aux chaînes semble être seulement pour démos , il est la liaison à « ViewModels qui contiennent des collections de vues contenant des collections de ViewModels » que la puissance de WPF semble vraiment sortir.

Pour ceux d'usage compétent dans le modèle MVVM, quelle est votre approche standard à la liaison ItemsControl, ListView, ListBox aux collections dans un ViewModel Je cherche des conseils de l'expérience comme ceci:

  • utilisez toujours ObservableCollection <...> et ne liste <...> parce que ...
  • quelque chose de mieux que ItemsControl pour afficher une collection est ...
  • pour obtenir le filtrage à travailler dans votre ViewModel au lieu de code-behind, utilisation ...
  • collections d'utilisation de vues lorsque ... et collections de ViewModels quand ...
  • 90% du temps, je crée un ItemsControl et le lier à une ObservableCollection de vues qui ont leurs propres ViewModels ...
Était-ce utile?

La solution

J'utiliser un ObservableCollection de ViewModels pour les raisons suivantes:

  • ObservableCollection a déjà des événements disponibles pour la signalisation quand il a été modifié (par exemple lorsque des éléments sont ajoutés / supprimés de la collection).
  • Nous sommes à la « couche » ViewModel il assure une séparation plus propre d'avoir un ViewModel contient une collection de ViewModels plutôt que vues
  • S'il est nécessaire de modifier ou d'obtenir des données à partir d'éléments de la collection, vous pouvez modifier plus facilement que les données / accès si les éléments sont ViewModels (si elles sont vues que vous aurez souvent être coulée DataContext ou l'accès à son interface utilisateur de la vue éléments).

Autres conseils

J'aime utiliser un ObservableCollection de ViewModels. Le point de vue qui se lie à la collection peut définir un DataTemplate qui donne ViewModel son look. Cela conduit à moins de couplage entre les composants.

J'ai la même question, mais remplacer la « vue » par « modèle ». :)

J'ai un modèle avec une collection d'autres modèles. Je veux que mon viewmodel d'avoir une collection observable d'autres viewmodels, mais une fois que j'instancier comme ça - la connexion entre le contenu de la collection de modèle est perdu. Ai-je besoin maintenant pour commencer le câblage de tous les événements de la collection viewmodels observable retour à la collection des modèles?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top