2016-08-28 2 views
-1

c'est mon scénario: dans une MainPage, je montre une liste de Détails. J'ai donc créé des DetailViewModels qui sont organisés dans MainViewModel dans une ObservableCollection.MVVM - Comment passer un ViewModel déjà existant à une nouvelle vue pour être databound

Je souhaite ouvrir une page DetailPage en cliquant sur un élément dans la liste des détails. Je navigue donc à DetailPage. Et maintenant je veux utiliser le DetailViewModel déjà existant (juste cliqué) pour être lié à la page DetailPage. Je ne sais pas comment faire cela - même si cela semble être une situation assez courante. À l'aide de MVVM Light par défaut, une nouvelle instance de DetailViewModel est créée.

Probablement je manque juste quelque chose ...

Merci

Hans-Peter

Répondre

0

En bref, modifiez votre configuration

A ViewModel rassemble toutes Models (qui contiennent les données) à afficher, mais ne contient pas les données elle-même. Donc, dans votre cas, le DetailViewModel ne doit exister qu'une seule fois dans votre application, mais il peut contenir un DetailModel avec les données réelles que vous souhaitez afficher.

Vous pouvez utiliser le Messenger pour passer le DetailModel choisi parmi le MainViewModel au DetailViewModel une fois qu'il est construit, ou créer une méthode SelectDetailModel(DetailModel model) dans votre DetailViewModel que vous définissez une fois une nouvelle DetailModel est sélectionné

SimpleIoc.Default.GetInstance<DetailViewModel>().SelectDetailModel(model);