Fornendo a Viewmodels l'accesso al modello a livello di applicazione in MVVM

-1

Mi sto esercitando nella creazione di applicazioni usando MVVM e WPF + C # creando una "domanda di finanziamento". L'applicazione contiene diverse viste con i propri ViewModels. Le viste sono in una gerarchia e sono definite come UserControl con ViewModel specificato in XAML.

Un modello principale contiene diverse informazioni finanziarie che sarebbero presentate nelle viste in diversi modi.

Quale tecnica dovrei usare per assicurarmi che tutti i ViewModels abbiano accesso al modello principale?

Posso inventare tre modi:

1. Utilizzo di una classe statica che tutti i ViewModels possono utilizzare.

2. Uso di MEF con criterio di creazione condivisa per utilizzare un modello Singleton che i ViewModel ottengono quando vengono creati.

3. Ogni ViewModel ha una proprietà per il modello principale e lascia che sia il genitore ViewModels a propagarlo lungo la catena.

Quale soluzione è raccomandata per MVVM?

    
posta qnyz 02.10.2018 - 14:11
fonte

1 risposta

1

Per accedere allo stato di applicazione "globale", generalmente utilizzo l'opzione 3 (riferimenti principali), con una leggera modifica. Per evitare di legare un modello di visualizzazione solo per essere utilizzabile su un singolo tipo di genitore, utilizzo un'interfaccia chiamata IHasApplicationState che espone una proprietà ApplicationState di qualsiasi tipo utilizzato per contenere lo stato.

Con questo modello, tutto ciò che deve conoscere lo stato dell'applicazione può assumere questa interfaccia come argomento del costruttore. Può utilizzarlo e archiviarlo internamente e passarlo a qualsiasi modello di vista figlio che deve anche creare. È inoltre conforme a DI per un facile test dell'unità.

    
risposta data 02.10.2018 - 14:49
fonte

Leggi altre domande sui tag