如果集合中的某個項目的值發生更改,則無法獲取總計數計算結果。我在課上有INotifyPropertChanged
活動,集合是ObservableCollection<T>
。我也試過BindingList<T>
,但沒有運氣。使用INotifyPropertyChanged計算總數
public class Inventory
{
public ObservableCollection<Item> Items { get; set; }
public int TotalCount {
get { return Items.Select(i => i.Count).Sum(); }
}
}
public class Item : INotifyPropertyChanged {
private int count;
public int Count {
get { return count; }
set {
count = value;
NotifyPropertyChanged("Count");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyName) {
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
我的下一個雖然是登記爲被添加到集合中的每個項目的事件處理程序,但我不太清楚如何管理可能已經註冊的事件。看來我缺少一些簡單的東西,任何人都可以指出它?
順便說一句,我是WPF的數據綁定到這個類。
請注意:此代碼錯誤。如果在集合上調用Clear方法(在這種情況下,「Action」爲「Reset」並且OldItems和NewItems列表都是空的),ItemPropertyChanged處理程序不會從項目中移除。 – Athari