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 で、それらのアイテムの 1 つのプロパティ「name」を更新する場合、監視可能なコレクションを変更していないため、更新は表示されません。変更しているのは、いずれかのプロパティの値です。アイテム (顧客) は observableCollection に存在しますが、observableCollection は変更されないため UI に通知を送信しません (アイテムの数は同じです)。

顧客のプロパティ名を更新したときに UI に通知する場合は、顧客クラスに INotifyPropertyChanged インターフェイスを実装する必要があります。

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

于 2011-01-30T14:49:56.497 に答える