2010-10-28 4 views
0

Je suis en train d'écrire un exemple d'application dans WPF et j'aimerais que le modèle soit facilement réutilisable dans une application WinForms, donc je voudrais garder les choses spécifiques à WPF comme INotifyChanged et DependencyObjects en dehors de cela.Comment traduire des listes dans un modèle MVVM en ObservableCollections dans le View-Model?

Si une classe Model a une liste d'une autre classe Model, comment puis-je implémenter le ObserveableCollection correspondant dans le View-Model pour pouvoir maintenir mes liaisons à jour?

Un cas d'utilisation pour ce serait si j'ai un objet modèle Boss qui a une liste des employés. Je crée un objet Boss, mais je charge la liste des employés de manière asynchrone, comment puis-je savoir quand la liste des employés a été récupérée et remplie? Je voudrais garder le code de chargement à l'intérieur du modèle. Je suppose que pour résumer ce que je demande est ce qui est la bonne façon d'avoir des interactions Model to Model tout en ayant le View-Model reflète ces changements?

+0

Compte tenu de votre exemple, cherchez-vous également à afficher le chargement des employés de manière asynchrone dans l'interface utilisateur? Ou voulez-vous simplement montrer toute la collection une fois le chargement terminé? –

+0

oui asynchrone ... donc si la collection était liée à une listbox par exemple, elle apparaîtrait à chaque fois que l'appel asynchrone retournait. –

Répondre

3

Votre modèle doit fournir des notifications de modification. Vous pouvez le faire de manière agnostique en utilisant INotifyPropertyChanged et INotifyCollectionChanged. Contrairement à votre question, ce ne sont pas des interfaces spécifiques à WPF. Ils sont dans System.ComponentModel - pas un espace de noms ou un assembly WPF.

Si vous ne voulez vraiment pas utiliser ces interfaces, vous pouvez toujours fournir vos propres événements. Dans tous les cas, votre modèle de vue devra se connecter aux événements pour se tenir au courant de votre modèle.

+0

Merci, j'espérais qu'il y avait un autre modèle pour le faire, mais il ne semble pas. Aussi je suppose que je toujours associe simplement INotifyPropertyChanged avec WPF parce que c'est tellement utilisé là bas! –

Questions connexes