Domanda

Abbiamo un'applicazione che ha una tipica vista Master/Dettaglio.La vista principale mostra un elenco di titoli di biglietti e se fai clic sul titolo di un biglietto vedrai una vista con i dettagli del biglietto.

La vista principale ha un modello che è un elenco di oggetti "ticket", ciascuno contenente più informazioni su un ticket specifico.Abbiamo associato un gestore al clic che sostanzialmente crea un'istanza di una nuova vista di dettaglio e la visualizza.Funziona bene, tranne per il fatto che dobbiamo fornire tutti i valori di configurazione come tipi di dati primitivi al costruttore (sappiamo che non possiamo usare oggetti durante l'istanziazione)

Abbiamo pensato a un altro modo per farlo ma non siamo riusciti a farlo funzionare.In Init() (del modello di visualizzazione dettaglio) passiamo solo l'ID (del ticket cliccato) e volevamo utilizzare Mvx.Resolve per ottenere il modello di visualizzazione principale.Quindi la prima domanda sarebbe: puoi recuperare modelli di visualizzazione arbitrari all'interno di altri modelli di visualizzazione?

Una seconda idea sarebbe scrivere una classe del modello di visualizzazione di base da cui ereditano tutti i modelli di visualizzazione nella nostra app, che registri il modello di visualizzazione durante l'istanziazione in un servizio in modo che tu possa chiamare quel servizio e recuperare il modello di visualizzazione da qualsiasi luogo (modello mediatore).Sarebbe contrario al quadro?

Una risposta che ho trovato è "usa i messaggi" ma a me sembra un po' ingombrante, almeno per come l'ho capito.Il modello di visualizzazione dettaglio dovrebbe inviare un messaggio al modello di visualizzazione principale "Ok, sono pronto adesso" e quindi il modello di visualizzazione principale direbbe "Va bene, ecco la configurazione".

Quindi riassumendo le domande:

  1. È possibile recuperare determinati modelli di visualizzazione dal framework all'interno di altri modelli di visualizzazione?
  2. Implementarlo manualmente sarebbe contrario al quadro?
  3. Abbiamo compreso correttamente l'approccio al messaggio e, in caso negativo, quale sarebbe un modo più leggero/generico per farlo?

Saluti e grazie

Tom

È stato utile?

Soluzione

Di solito, quando devo condividere dati tra modelli di visualizzazione, utilizzo un servizio per gestirli.Il servizio viene in genere iniettato tramite IoC.

Tratto i modelli di visualizzazione come mediatore tra i servizi e la visualizzazione.La maggior parte della mia logica è archiviata nel Servizio.Le uniche cose che ho nel modello di visualizzazione sono le proprietà per l'associazione dati, i comandi che vengono inviati a un servizio e altri problemi a livello di presentazione.

Per il tuo scenario, avrei il MasterViewModel passare un identificatore al DetailViewModel, dove verrà chiesto il ConfigurationService per la configurazione tramite id.

Spero che questo ti aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top