/ / POCO i wiele modeli ViewModels wskazujących na ten sam POCO? - c #, mvvm, poco, inotifypropertychanged

POCO i wiele ViewModels wskazujących na to samo POCO? - c #, mvvm, poco, inotifypropertychanged

Jak można sobie poradzić z taką sytuacjąto? Posiadanie więcej niż jednego ViewModel z odwołaniem do tego samego obiektu POCO. ViewModel A aktualizuje POCO ... teraz ViewModel B musi jakoś o tym wiedzieć?

Odpowiedzi:

2 dla odpowiedzi № 1

Zakładając, że Twój POCO nie może zaimplementować INotifyPropertyChanged, możesz użyć mediator wzorzec ostrzegający inne modele widoków o zmianie POCO:

public interface ICareWhenAModelChanges<T>
{
void ModelUpdated(T updatedModel);
}

public class ModelChangeMediator<T>
{
private List<ICareWhenAModelChanges<T>> _listeners = new List<ICareWhenAModelChanges<T>>();

public void Register(ICareWhenAModelChanges<T> listener)
{
_listeners.Add(listener);
}

public void NotifyThatModelIsUpdated(T updatedModel)
{
foreach (var listener in _listeners) listener.ModelUpdated(updatedModel);
}
}

Twój model widoku może następnie zaimplementować ICareWhenAModelChanges<T> interfejs, zarejestruj się we współdzielonej instancji mediatora (uzyskanej za pośrednictwem singletona lub, lepiej, jakiegoś rodzaju frameworka DI / IoC) i zrób wszystko, co konieczne, w ModelUpdated metoda