2013-05-13 2 views
5

Ho un'applicazione MVPM WPF che mi piacerebbe refactoring per utilizzare MvvmCross per supportare un WPF e Mono per le implementazioni Android.Visualizzazioni composite in MvvmCross

di vista della nostra applicazione si compone di:

  • Una barra degli strumenti che è sempre visibile
  • Una barra di navigazione regione
  • Una vista principale regione
  • Una regione finestra popup

Ogni di queste regioni è un UserControl sulla finestra principale dell'applicazione e un UiService semplicemente scambia le viste in ogni regione. Nel caso della finestra pop-up, anche questo è solo un UserControl sulla finestra principale che cambia la visibilità su Mostra o Nascondi chiamate a UiService. UiService accetta anche un parametro di contesto che consente di passare le informazioni di stato nel modello di visualizzazione da mostrare.

Le viste principali sono generalmente composte da diverse viste secondarie. In questi casi, il modello di vista principale crea i modelli di vista figlio che sono esposti come proprietà. La vista principale imposta queste proprietà come contesto dati delle viste secondarie.

Penso che MvvmCross sosterrebbe sicuramente questo tipo di viste composite, ma non sono riuscito a trovare un esempio. Ci sono esempi di MvvmCross rilevanti? Quale sarebbe l'approccio consigliato per l'implementazione in MvvmCross?

risposta

6

Penso che MvvmCross sosterrebbe sicuramente questo tipo di viste composite, ma non sono riuscito a trovare un esempio di questo tipo. Ci sono esempi di MvvmCross rilevanti? Quale sarebbe l'approccio consigliato per l'implementazione in MvvmCross?

Questo tipo di visualizzazione non è quello predefinito per le app mobili: la maggior parte delle app mobili sono basate su pagine.

Tuttavia, le visualizzazioni composite stanno diventando sempre più comuni nelle app per tablet e anche le app mobili hanno le loro eccezioni, ad es. schede, panorami, riquadri, ecc.

Per consentire diversi tipi di visualizzazione, ciascuna piattaforma UI MvvmCross fornisce un presenter che è possibile personalizzare in base alle proprie esigenze.

Questa classe presenter è dove è possibile scegliere come si desidera visualizzare ViewModels e Visualizzazioni. Inoltre, in quanto è solo una classe C#, può delegare questa responsabilità come molti altri oggetti come si vuole, che consente di costruire modelli sempre più complessi di pannelli, flyout, schede, navigationstacks embedded, ecc

Per alcuni informazioni, compresi i collegamenti ad alcuni esempi, vedere questo ponte slide - https://speakerdeck.com/cirrious/presenters-in-mvvmcross

Gli esempi WPF e iOS TwitterSearch potrebbero essere un buon punto di partenza su questo - https://github.com/slodge/MvvmCross-Tutorials/tree/master/Sample%20-%20TwitterSearch

+0

solo una nota ... l'API di Twitter è obsoleta e viene utilizzata nel Sample - TwitterSearch 'L'API di REST di Twitter v1 non è più attiva. Effettua la migrazione all'API v1.1. https: // dev.twitter.com/docs/api/1.1/overview.' – Syska

2

Ricorda che puoi Mostra 2 ViewModels su qualsiasi dato il comando.

Ad esempio, se un utente completa un modulo di accesso e tu che carichi un'interfaccia utente composita, mostra il modello di visualizzazione della barra di navigazione e il modello di visualizzazione principale.

È quindi possibile creare un presentatore personalizzato per consegnare il layout delle viste corrispondenti.

Sembra semplice (ed è) ma mi ci è voluto un po 'per capirlo. La soluzione è stata dimostrata nel tutorial di TwitterSearch come Stuart cita

2

Ho creato un plug-in che utilizza un presentatore personalizzato per consentire a più ViewModels di essere visualizzati sulla stessa pagina di UserControls. Inoltre permette la solita vista di navigazione, in modo da poter utilizzare gli esatti modelli di visualizzazione per avere una vista composite su WPF, Andoid compresse, Windows Store o iPad, e le pagine di navigazione su dispositivi mobili:

https://github.com/ChristianRuiz/MvvmCross-ControlsNavigation