J'ai une application qui a un onglet Tâches et un onglet Projets. J'ai décidé de créer un ViewModel séparé pour chacun des onglets, TasksViewModel et ProjectsViewModel.État de partage/modifications dans ViewModels
L'onglet Tâches comporte une nouvelle zone de tâches avec un projet associé et l'onglet Projets (évidemment) contient une liste de projets. Je souhaite que le menu déroulant de l'onglet Tâches permette de partager la même collection que la liste d'onglets Projets. Ainsi, à chaque fois que j'ajoute ou supprime un projet dans l'onglet Projets, la liste de l'onglet Tâches date automatiquement. Cela a bien fonctionné avec un seul ViewModel mais il commençait à devenir assez indiscipliné.
Ne devrais-je pas me séparer en deux ViewModels? Existe-t-il une méthode commune de partage de données comme celle-ci? Peut-être passer le même ObservableCollection<Project>
dans chacun des ViewModels? Peut-être un certain type de notification retour à la TasksViewModel le long des lignes de ICollectionChanged
.
Appréciez toute idée/contribution!
Je suis d'accord, mais seulement si les données font vraiment partie du modèle de vue, ne font pas partie du modèle. Si cela fait partie du modèle, je dirais que le faire passer d'un modèle de vue à l'autre serait une très mauvaise idée: mieux vaut partager un seul modèle tout au long de l'application. Je l'explique plus loin dans ma réponse. (Oui, je réalise que DI est un bon moyen d'accomplir le partage du modèle commun, mais je pense qu'il est très important de l'identifier comme tel.) –
Thaks Reed, j'aime l'idée de la messagerie. J'ai utilisé une fonctionnalité similaire dans le framework WebformsMVP. – joshperry