Either the model needs to support change notification, or you need a "single point of truth" such as a service, which itself has change notification. Your view models would then attach to this change notification and ensure the changes are passed onto the view.
Simplified example:
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");
}
}
Now, as long as all your view models use this service, you can have them use the event(s) on the service to detect changes they're interested in. Of course, depending on your exact requirements, you may be able to reduce the amount of work done when changes are detected.
HTH,
Kent