确保我的假设是正确的。
我有一个ObservableCollection类。我调用一个web服务并检索设备数组。然后,我枚举ObservableCollection并将每个项目设置为从Web服务检索到的相应设备。我检索到的设备与ObservableCollection中的项目具有不同的属性值,但PropertyChanged事件没有触发。
我认为这是按设计来的,为了让PropertyChanged事件触发,我实际上必须枚举每个属性并设置该值?
例如,在下面的情况下,任何Device类属性上都没有触发PropertyChanged事件。
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;
}
在上述情况下,纬度和经度都会触发它们的事件。
由于我的类有一堆属性,是否有比逐个修改更好的方法?
String.Empty
,这样更简洁。 - H.B.