我有Code First,CTP5数据上下文。我有一个带有DataGrid的WPF应用程序。我将其DataContext设置为:
dataGrid.DataContext = _context.Customers.Local;
然后我使用
添加一些实体_context.Customers.Add(customer1); and so on
_context.SaveChanges();
然后,我将这些客户(客户列表)提供给另一个班级,以便对他们进行一些工作。
customerUpdater.Update(customers);
这需要很长时间,并在每个客户工作时更新其属性。 e.g。
foreach(var customer in customers) { customer.Name = "updated name"; }
我在WPF UI中没有看到这些更新!我所看到的只是未经改变的客户的原始列表。 Customers.Local虽然是一个ObservableCollection,所以我不明白为什么我没有在UI中看到更新。
每次发生属性更新时,我都不想调用SaveChanges(),它几乎是不断的。有人能告诉我为什么这不会更新吗?
答案 0 :(得分:3)
如果Customers.Local是一个observableCollection,并且您更新了其中一个项目的属性“name”,则您没有看到更新,因为您没有修改可观察集合,您正在修改的是属性的值observableCollection中存在的一个项目(客户),但是observableCollection不会向UI发送任何通知,因为它保持不变(它具有相同数量的项目)
如果您希望在更新客户的属性名称时通知UI,则必须使客户类实现INotifyPropertyChanged接口。
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx