檢查以確保我的假設是正確的。使用INotifyPropertyChanged更新ObservableCollection項目屬性
我有一個ObservableCollection類。我正在調用Web服務並檢索一組設備。然後我列舉ObservableCollection並將每個項目設置爲從Web服務檢索的相應設備。我懷疑的設備具有與ObservableCollection中的項目不同的屬性值,但PropertyChanged事件不會觸發。
我認爲這是ByDesign,並且爲了讓PropertyChanged事件觸發,我實際上必須枚舉每個屬性並設置值?
例如,在下面的情況下,沒有任何PropertyChanged事件在任何Device類屬性上觸發。
ObservableCollection<Device> Items = new ObservableCollection<Device>();
Items = LoadItems();
List<Device> devices = GetDevices();
foreach (var item in Items)
{
var currentDevice = devices.Single(d1 => d1.ID == item.ID);
item = currentDevice;
}
但是,如果我手動更新每個屬性,我在業務:
ObservableCollection<Device> Items = new ObservableCollection<Device>();
Items = LoadItems();
List<Device> devices = GetDevices();
foreach (var item in Items)
{
var currentDevice = devices.Single(d1 => d1.ID == item.ID);
item.Latitude = currentDevice.Latitude;
item.Longitude= currentDevice.Longitude;
}
在上述情況下,經度和緯度火他們的活動。
由於我的課有一堆屬性有沒有更好的方法來做到這一點比一個一個?
嘿,這工作得很好。我在Device中的一種類型是屬性類,它是類。所以我不得不調用item.Load(currentDevice)和item.Location.Load(currentDevice.Location) – 2011-02-08 17:14:22