這裏是故事更新可觀察集合的正確方法?
//這是示例類
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;
接下來我有一個按鈕,將更新名稱爲「本田」的集合項目。我想更新計數值+1。
這是我做了按鈕單擊事件:
第一種方法:
我在它與價值「本田」搜索列表中得到了集合中的索引。我更新的價值該索引是這樣的:
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 2012-02-18 06:01:38