Либо модель должна поддерживать уведомление об изменениях, либо вам нужна «единая точка правды», такая как служба, которая сама имеет уведомление об изменении. Затем ваши модели представлений присоединятся к этому уведомлению об изменениях и обеспечат передачу изменений в представление.
Упрощенный пример:
public interface IDataService
{
ICollection<Customer> Customers
{
get;
}
void AddCustomer(Customer customer);
void DeleteCustomer(Customer customer);
event EventHandler<EventArgs> CustomersChanged;
}
public class SomeViewModel : ViewModel
{
public SomeViewModel(IDataService dataService)
{
_dataService.CustomersChanged += delegate
{
UpdateCustomerViewModels();
};
UpdateCustomerViewModels();
}
public ICollection<CustomerViewModel> Customers
{
get { ... }
}
private void UpdateCustomerViewModels()
{
...
OnPropertyChanged("Customers");
}
}
Теперь, пока все ваши модели представлений используют этот сервис, вы можете позволить им использовать события в сервисе для обнаружения изменений, в которых они заинтересованы. Конечно, в зависимости от ваших конкретных требований, вы можете возможность сократить объем работы, выполняемой при обнаружении изменений.