1) Список моделей хранить в ObservableCollection,
2) В классе модели реализовать интерфейс INotifyPropertyChanged (можно сделать это в базовом классе)
3) В свойствах модели в сеттере вбрасывать событие PropertyChanged с именем свойства:
private string _name;
public string Name
{
get
{
return _name;
}
set
{
if (_name != value)
{
_name= value;
RaisePropertyChanged(nameof(Name));
}
}
}
// можно сделать в базовом классе, в котором и реализовать интерфейс INotifyPropertyChanged
protected virtual void RaisePropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}