8
votes

Vues composites en MVVMCross

J'ai une application WPF MVVM que j'aimerais refroidir pour utiliser MVVMcross pour prendre en charge un WPF et mono pour des implémentations Android.

Les vues de notre application consistent en:

  • une barre d'outils toujours visible
  • Une région de barre de navigation
  • une région de vue principale
  • une région de fenêtre contextuelle

    Chacune de ces régions est une usercontrol sur la fenêtre principale de l'application et un uservice échange simplement les vues de chaque région. Dans le cas de la fenêtre contextuelle, il s'agit également d'un Usercontrol sur la fenêtre principale qui change de visibilité sur Afficher ou masquer les appels à l'Uservice. L'Uservice accepte également un paramètre de contexte qui permet d'affecter les informations d'état dans le modèle d'affichage à afficher.

    Les vues principales sont généralement un composite de plusieurs vues d'enfants. Dans ces cas, le modèle de vue principal crée les modèles de vue enfant qui sont exposés comme propriétés. La vue principale définit ces propriétés comme contexte de données de la vue sur l'enfant.

    Je penserais que MVVMcross soutiendrait certainement cette vue en composite de style, mais je n'ai pas pu trouver un exemple de tel. Existe-t-il des exemples de MVVMCross pertinents? Quelle serait l'approche recommandée pour la mise en œuvre dans MVVMCross?


0 commentaires

3 Réponses :


6
votes

Je penserais que MVVMcross soutiendrait certainement cette vue en composite de style, mais je n'ai pas pu trouver un exemple de tel. Existe-t-il des exemples de MVVMCross pertinents? Quelle serait l'approche recommandée pour la mise en œuvre dans MVVMCross?

Ce style de vue n'est pas la valeur par défaut des applications mobiles - la plupart des applications mobiles sont basées sur la page.

Cependant, des vues composites deviennent de plus en plus courantes dans les applications de tablette - et même des applications mobiles ont leurs exceptions - par exception. onglets, panoramas, flyouts, etc.

Pour permettre différents types d'affichage, chaque plate-forme MVVMCross UI fournit un présentateur que vous pouvez personnaliser à mesure que vous en avez besoin.

Ce présentateur est où vous pouvez choisir comment vous souhaitez présenter vos images et vos vues. En outre, comme il s'agit simplement d'une classe C #, il peut déléguer cette responsabilité à autant d'autres objets qu'il le souhaite, vous permettant de construire des motifs de plus en plus complexes de panneaux, de flyouts, d'onglets, de taches de navigation intégrées, etc.

Pour certaines informations à ce sujet, y compris des liens avec des échantillons, voir ce pont de diapositives - https://speakerdeck.com/ Cirir / Présentateurs-in-MVVMcross

Les exemples WPF et iOS TwitterSearch pourraient être un bon endroit pour commencer sur ce - https://github.com/slodge/mvvmcross-Tutoriels/tree/master/Sample%20-%20Twittersearch


1 commentaires

Juste une note ... L'API Twitter est obsolète qui est utilisée dans l'échantillon - TwitterSearch L'API V1 Twitter Rest n'est plus active. Veuillez migrer vers API V1.1. https://dev.twitter.com/docs/api/1.1/overview.



3
votes

N'oubliez pas que vous pouvez afficher 2 images de vue sur une commande donnée.

Par exemple, si un utilisateur complète un formulaire de connexion et que vous devez charger un UI composite, affichez le modèle de vue de la barre de navigation et le modèle de vue principale.

Vous pouvez ensuite créer un présentateur personnalisé pour remettre la disposition des vues correspondantes.

Cela semble simple (et c'est) mais cela m'a pris un certain temps pour le comprendre. La solution démontrée dans le tutoriel twittersearch en tant que Stuart mentionne


0 commentaires

2
votes

J'ai créé un plugin qui utilise un présentateur personnalisé pour permettre l'affichage de plusieurs images à afficher sur la même page que UserControls. Il permet également la navigation d'affichage habituelle. Vous pouvez donc utiliser les modèles d'affichage exacts pour avoir une vue en composite sur WPF, les tablettes et les tablettes et iPad Windows, ainsi que les pages de navigation sur les périphériques mobiles:

https://github.com/christianruiz/mvvlcross-controlsnavigation


0 commentaires