Question

Nous avons une application qui a une vue Maître/Détail typique.La vue principale affiche une liste de titres de tickets et si vous cliquez sur un titre de ticket, vous voyez une vue avec les détails du ticket.

La vue principale a un modèle qui est une liste d'objets "ticket", chacun contenant plus d'informations sur un ticket spécifique.Nous avons lié un gestionnaire au clic qui instancie essentiellement une nouvelle vue détaillée et l'affiche.Cela fonctionne bien, sauf que nous devons donner toutes les valeurs de configuration sous forme de types de données primitifs au constructeur (nous savons que nous ne pouvons pas utiliser d'objets lors de l'instanciation)

Nous avons réfléchi à une autre façon de procéder, mais nous n'avons pas réussi à la faire fonctionner.Dans Init() (du modèle de vue détaillée), nous transmettons uniquement l'ID (du ticket cliqué) et souhaitons utiliser Mvx.Resolve pour obtenir le modèle de vue principal.La première question serait donc la suivante : pouvez-vous récupérer des modèles de vue arbitraires dans d’autres modèles de vue ?

Une deuxième idée serait d'écrire une classe de modèle de vue de base dont héritent tous les modèles de vue de notre application, qui enregistre le modèle de vue lors de l'instanciation auprès d'un service afin que vous puissiez appeler ce service et récupérer le modèle de vue de n'importe où (modèle médiateur).Serait-ce contraire au cadre ?

Une réponse que j'ai trouvée est "utiliser des messages", mais cela me semble assez volumineux, du moins d'après ce que j'ai compris.Le modèle de vue détaillée devrait envoyer un message au modèle de vue principale "Ok, je suis prêt maintenant", puis le modèle de vue principale dirait "Très bien, voici la configuration".

Alors pour résumer les questions :

  1. Est-il possible de récupérer certains modèles de vue du framework à l'intérieur d'autres modèles de vue ?
  2. La mise en œuvre manuelle de cela serait-elle contraire au cadre ?
  3. Avons-nous bien compris l’approche du message et si non, quelle serait une manière plus légère/générique de le faire ?

Bravo et merci

À M

Était-ce utile?

La solution

Habituellement, lorsque je dois partager des données entre des modèles de vue, j'utilise un service pour les gérer.Le service est généralement injecté via IoC.

Je traite les modèles de vue comme un médiateur entre les services et la vue.La plupart de ma logique est stockée dans le service.Les seules choses que j'ai dans le modèle de vue sont les propriétés de liaison de données, les commandes qui sont envoyées à un service et d'autres problèmes de niveau de présentation.

Pour votre scénario, j'aurais le MasterViewModel transmettre un identifiant au DetailViewModel, où il demandera au ConfigurationService pour la configuration par identifiant.

J'espère que cela t'aides.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top