Обновление WPF Просмотр списка с INotifyPropertyChanged - PullRequest
0 голосов
/ 04 марта 2020

Я знаю, что на самом деле нужно использовать ObservableCollection. Я хочу научить кого-то WPF и начал с ItemsControl, который связывается с List<MyPoco>. Сейчас я реализую RemoveCommand. Я планировал сделать что-то вроде этого:

private void Remove(MyPoco obj) 
{
    if (MyList.Contain(obj)) 
    {
        MyList.Remove(obj);
        OnPropertyChanged(nameof(MyList));
    }
}

Я бы ожидал, что WPF обновит View. Почему это не работает?

Я правильно реализую INotifyPropertyChanged. Это работает для других свойств.

1 Ответ

0 голосов
/ 04 марта 2020

Вы уведомляете, что свойство MyList изменилось, но представление действительно осознало, что оно уже отображает тот экземпляр, сохраненный в свойстве MyList, и поэтому обновление отсутствует.

Вы можете попробовать этот код

private void Remove(MyPoco obj) 
{
    MyList = MyList.Where( e => e != obj ).ToList();
    OnPropertyChanged(nameof(MyList));
}

Теперь есть новый экземпляр списка, и представление обновится.

...