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 № 1Zakł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