@crescent

Wpf listview: как обновить только один элемент его?

Есть listview
В listview.Items лежат элементы типа model
Одно из них (model1) изменилось.
Мне нужно чтобы listview обновился с наименьшими затратами - те фактически перерисовал только элемент model

Ps: При этом расположение элементов в listview не изменилось.
Как это сделать???
  • Вопрос задан
  • 279 просмотров
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
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));
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы