Ho una serie di ViewModels raffigurati come nell'immagine qui sotto.
E ho un paio di comandi AcceptCommand, CancelCommand nel modello di vista di livello superiore che sono associati rispettivamente ai pulsanti Applica e Annulla in una vista.
Vorrei attivare i pulsanti Applica e Annulla solo quando uno dei modelli di visualizzazione Livello figlio (Livello 1 e Livello 2) è sporco.
Attualmente sto pensando a due possibili soluzioni per ottenere questo comportamento:
1) Avere ViewModels a ogni livello Child sollevano un evento PropertyChanged / IsDirty e gestiscono quell'evento a livello di genitore e contrassegnano il genitore come sporco e quindi continuano questo processo fino a raggiungere il modello di vista di livello superiore.
2) Potrei avere tutti i modelli di visualizzazione a livello di bambino per pubblicare un messaggio per indicare lo stato sporco / pulito su alcuni Mediator / Messenger e fare in modo che ViewModel di livello superiore ascolti quei messaggi e li contrassegnino sporchi / puliti in base a un conteggio nel Modello vista livello superiore in base a quanti messaggi sporchi / puliti ha ricevuto.
Però, la seconda opzione sembra migliore della prima. Non ritengo che nessuno di questi due approcci sia ottimale.
Ci sono alternative / modelli migliori per avvicinarsi e risolvere questo problema?