如何处理这样的情况?有多个ViewModel具有对同一POCO对象的引用。 ViewModel A更新了POCO ......现在ViewModel B需要以某种方式了解它?
答案 0 :(得分:2)
假设您的POCO无法实现INotifyPropertyChanged
,您可以使用mediator模式在更改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);
}
}
然后,您的视图模型可以实现ICareWhenAModelChanges<T>
接口,将自身注册到中介的共享实例(通过单例或更好的某种DI / IoC框架获取)并执行它需要的任何操作在ModelUpdated
方法