POCO和多个ViewModel指向同一个POCO?
怎么会处理这样的情况呢? 让多个ViewModel具有对同一POCO对象的引用。 ViewModel A更新POCO …现在ViewModel B需要以某种方式了解这一点?
假设您的POCO无法实现INotifyPropertyChanged
,您可以使用中介模式在POCO更改时提醒其他视图模型:
public interface ICareWhenAModelChanges { void ModelUpdated(T updatedModel); } public class ModelChangeMediator { private List> _listeners = new List>(); public void Register(ICareWhenAModelChanges listener) { _listeners.Add(listener); } public void NotifyThatModelIsUpdated(T updatedModel) { foreach (var listener in _listeners) listener.ModelUpdated(updatedModel); } }
然后,您的视图模型可以实现ICareWhenAModelChanges
接口,使用介体的共享实例(通过单例或更好的某种DI / IoC框架获取)注册自己,并在ModelUpdated
方法中执行任何ModelUpdated