Desidero che il modello di vista principale abbia un determinato elenco e quindi acceda da molti altri modelli di visualizzazione.Accesso a una proprietà in un ViewModel da un altro
Ad esempio, in MainViewModel.cs avrò un elenco di 50 numeri, quindi in NumListViewModel.cs, mi piacerebbe accedervi per mostrarlo come un elenco, e in AddNumViewModel.cs I ' Mi piacerebbe essere in grado di aggiornare quella lista.
È stato suggerito di utilizzare eventi/evenaggerator, cosa che ho fatto, ma sfortunatamente, per quel che ne so tutto ciò che posso fare è inviare un numero da una vista a un'altra e dirgli di aggiornare la lista, ma il il problema è che, man mano che il programma cresce, avrò bisogno di avere molti abbonati nel modello di visualizzazione principale, e quando qualcosa accade realmente dovrò "pubblicare" eventi in base al numero di abbonati che rende ancora più difficile da mantenere.
Ho anche trovato un'altra risposta, istruendo di creare un'istanza di anotherVM all'interno del mainVM, con un parametro impostato su "this" che è un riferimento al mainVM. Funziona, ma poi di nuovo, potrebbe diventare piuttosto lungo.
Quindi la mia domanda è, c'è un migliore modo per accedere a una proprietà da un'altra VM?
Come letteralmente avere un'istanza della classe che detiene l'elenco in mainVM e quindi essere in grado di aggiornarlo/accedervi dalle altre VM, senza dover programmare esplicitamente quale VM può. Renderebbe la vita molto più facile
Nella tua risposta, cerca di evitare di suggerire i quadri. Anche se ce ne sono alcuni veramente buoni, voglio essere in grado di farlo almeno da solo.
Ad esempio:
MainVM.cs:
public class MainVM
{
List lst = new List(); //Let's just say it's full...
}
OtherVM.cs:
public class OtherVM
{
lst.Add(3);
}
PS: sì lo so che è stato chiesto già, e sì che hanno fatto la mia ricerca, MA le risposte che ho trovato sono troppo 'statiche', immagino?
Usa Prism per risolvere istanza del MainViewModel. –