Проблема в вашем коде заключается в том, что после того, как вы связали «PersonList» с моделью представления, объект списка не изменится, пока вы не привяжете другой список (что происходит, если только элементы добавляются или удаляются из списка), поэтомуустановщик свойства «PersonList» не вызывается, и поэтому «свойство уведомления изменено» не запускается для «PersonCount».
Однако, поскольку PersonList является BindingList , добавленные / удаленные элементы отражаются в пользовательском интерфейсе.
Решения
1) Зарегистрируйте «PersonList» в ListChanged событие и вызовите «Уведомить об изменении свойства» в обработчике события.
public BindingList<Person> PersonList
{
get { return personList; }
set
{
if (personList != null)
personList.ListChanged -= PersonList_ListChanged;
personList = value;
if (personList != null)
personList.ListChanged += PersonList_ListChanged;
OnPropertyChanged(nameof(PersonList));
}
}
public PersonsDashboardViewModel()
{
PersonList = new BindingList<Person>();
PersonList.Add(new Person("Name1", "Lname1"));
PersonList.Add(new Person("Name2", "Lname2"));
}
private void PersonList_ListChanged(object sender, ListChangedEventArgs e)
{
OnPropertyChanged(nameof(PersonCount));
}
ИЛИ
2) Вызовите «Уведомить об изменении свойства» для «Персона», где вы добавляете элементы персонажа.
public void AddPersonItem()
{
PersonList.Add(new Person("Sean", "Brendon"));
OnPropertyChanged(nameof(PersonCount));
}