J'ai cherché pendant près de 3 heures et j'ai trouvé beaucoup de choses sur le partage de données PRISM et VM, mais je n'arrive pas à comprendre mon cerveau.Deux ViewModels utilisent un modèle qui contient des données
J'ai les deux ViewModels MainViewModel et ListViewModel. Le MainViewModel a un dockpanel où je veux avoir un menu commun à ajouter, supprimer des éléments et fermer l'application par exemple. Il y a aussi un usercontrol dans le XAML qui montre le ListView. Le ListView contient quelques ObservableCollection<ProjectModel>
. Depuis MainVM, je veux ajouter plus de Projets - donc à une collection. Pour accéder au ListModel, qui contient les données, je passe au constructeur des deux ViewModels:
public MainModuleViewModel(ListModel listModel)
{
ListModel = listModel;
InitializeCommands();
}
public ListModuleViewModel(ListModel listModel)
{
ListModel = listModel;
InitializeCommands();
}
Mais il semble que pendant initializaiton à différents objets de ListModel sont créés.
Donc, ma question est: Que dois-je faire, pour travailler uniquement sur l'objet de ListModel, que je passe aux constructeurs?
Comment créez-vous les instances de modèles de vue? – dymanoid
utilisez-vous l'injection ou quelque chose? D'une certaine manière, vous devez passer la même instance aux deux constructeurs. Vous devriez montrer où vous instancier ces classes – Jonesopolis
Peut-être pourriez-vous utiliser quelque chose comme un 'IListModelProvider' que vous injecteriez dans les deux classes. Ceci est tout simplement nouveau 'ListModel's si nécessaire, mais conserve un stock de modèles créés pour ne pas reconstruire des modèles existants? –