Вот историяПравильный метод обновления наблюдаемой коллекции?
// Это класс образец
Public class Car {
public string name {get;set;}
public int count {get;set;}
}
//The Observable collection of the above class.
ObservableCollection<Car> CarList = new ObservableCollection<Car>();
// I add an item to the collection.
CarList.Add(new Car() {name= "Toyota", count = 1});
CarList.Add(new Car() {name= "Kia", count = 1});
CarList.Add(new Car() {name= "Honda", count = 1});
CarList.Add(new Car() {name= "Nokia", count = 1});
Затем я добавил выше коллекцию в ListView.
ListView LView = new ListView();
ListView.ItemsSource = CarList;
Далее У меня есть кнопка, которая обновит элемент коллекции с именем «Хонда». Я хочу обновить значение count на +1.
Вот что я сделал на кнопку Click события:
Первый метод:
Я получил индекс в коллекции с помощью поиска списка со значением «Honda» в нем. И я обновил значение этого индекса, как это:
CarList[index].count = +1;
// This method does not creates any event hence will not update the ListView.
// To update ListView i had to do the following.
LView.ItemsSource= null;
Lview.ItemsSource = CarList;
Второй метод:
Я собрал значения во временном списке для текущего индекса.
index = // resulted index value with name "Honda".
string _name = CarList[index].name;
int _count = CarList[index].count + 1; // increase the count
// then removed the current index from the collection.
CarList.RemoveAt(index);
// created new List item here.
List<Car> temp = new List<Car>();
//added new value to the list.
temp.Add(new Car() {name = _name, count = _count});
// then I copied the first index of the above list to the collection.
CarList.Insert(index, temp[0]);
Второй метод обновил ListView.
Дайте мне самое лучшее и правильное решение для обновления списка
INotifyPropertyChanges кажется совершенно другим методом для обновления интерфейса. Я добавил эффект анимации раскадровки в событии обновления коллекции. Используя мой второй метод, он безупречно применяет анимацию к измененной строке в интерфейсе ListView. Однако мне может понадобиться корректировка, если вы используете INotifyPropertyChanges – user995387