DataGrid を TEntity 型の ObservableCollection にバインドしました。コレクションは、Entity Framework エンティティを保持します。
このようなエンティティが DB で変更されると、アプリに通知されます。単純な置換変更の場合は、ObservableCollection 内のエンティティを上書きするだけです。
ただし、UI の更新はトリガーされません。問題は、私が参照しているオブジェクトがまだ同じであることだと思います。一部の列が変更されたため、エンティティはUIに表示されるものとは明らかに異なります(DbContextでリロードします)。
私がこれをするとき
collection[index] = changedObject;
何も起こりません。コレクションは CollectionChanged イベントを正しく発生させますが、UI は何も更新しません。
それから私はこれを試しました:
collection[index] = new TEntity(); // Create a dummy object
collection[index] = changedObject;
これで UI が更新されますが、コレクションはもちろん 2 つの CollectionChanged イベントを発生させます。
1 つのオプションは、変更されたエンティティのすべてのプロパティに対して PropertyChanged イベントを発生させることだと思いますが、それはやり過ぎ (イベントが多すぎる) と思われ、これまでのところ、EF クラスにイベントを実装する必要はありません。
私の質問:行が変更されたがオブジェクトがまだ同じである場合 (オブジェクト内のプロパティは変更されています)、WPF バインドされた ObservableCollection を確実に更新するにはどうすればよいですか?