1

我有一个 Code First,CTP5 数据上下文。我有一个带有 DataGrid 的 WPF 应用程序。我将其 DataContext 设置为:

dataGrid.DataContext = _context.Customers.Local;

然后我添加一些实体使用

_context.Customers.Add(customer1); and so on
_context.SaveChanges();

然后,我将这些客户(客户列表)交给另一个班级来处理他们。

customerUpdater.Update(customers);

这需要很长时间,并且它会在工作时更新每个客户的属性。例如

foreach(var customer in customers) { customer.Name = "updated name"; }

不过,我没有在我的 WPF UI 中看到这些更新!我看到的只是原始客户名单。不过,Customers.Local 是一个 ObservableCollection,所以我不明白为什么我没有在 UI 中看到更新。

我不想每次发生属性更新时都调用 SaveChanges(),它几乎是不断的。谁能告诉我为什么这不会更新?

4

1 回答 1

3

如果 Customers.Local 是 observableCollection,并且您更新了其中一项的属性“名称”,则您看不到更新,因为您没有修改可观察集合,您正在修改的是其中一项的属性值observableCollection 中存在的项目(客户),但 observableCollection 不会向 UI 发送任何通知,因为它保持不变(它具有相同数量的项目)

如果您希望在更新客户的属性名称时通知 UI,您必须使客户类实现 INotifyPropertyChanged 接口。

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx

于 2011-01-30T14:49:56.497 回答