2017-10-11 8 views
0

J'ai deux modèles de vue: ListItemViewModel et ListViewModel. Mon ListViewModel contient de nombreux objets ListItemViewModel, lorsque je tente de supprimer un élément, je suis contraignant DeleteCommand dans ListItemViewModel comme ceci:Xamarin MvvmCross appel gestionnaire de commande à partir d'un autre viewModel

public IMvxCommand DeleteCommand => new MvxCommand(DeleteCommandHandler); 

Le problème est que DeleteCommandHandler est dans ListViewModel ... Comment puis-je appeler gestionnaire d'un autre voir le modèle?

MISE À JOUR 1

Got la question pourquoi ai-je besoin. La raison de ma question est que dans handler je devrais faire un appel d'API qui exige l'injection de dépendance, mais mon ListItemViewModel doit avoir le constructeur vide par défaut en raison de automapper, donc toute la logique métier que je veux passer au "parent view model" Essayez ListViewModel

Répondre

0

Essayez d'utiliser les services de messagerie pour communiquer avec différents modèles de vue. Dans votre cas, le DeleteCommandHandler se déclenchera en ListItemViewModel puis transmettra un message à ListViewModel en envoyant les détails de l'élément supprimé.

Se reporter lien ci-dessous sur la façon de mettre en œuvre la messagerie - https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/messaging-center/

+0

Il serait bon de résoudre mon problème sans messagerie :) –

+0

Pourquoi ne pouvez-vous avoir votre gestionnaire dans ListViewModel? –

+0

mon gestionnaire est dans 'ListViewModel' –