データグリッドを ViewModel 要素の監視可能なコレクションにバインドし、それを NotifyCollectionChangedEventHandler イベントにリンクしました。
obsListOfClients = new ObservableCollection<ClientVM>();
foreach (var c in contexte.listOfClients)
{
ClientVM cvm = new ClientVM(c);
obsListOfClients.Add(cvm);
}
obsListOfClients.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(collectionOfClientssChanged);
vue でデータグリッドを編集しています。コンテンツを追加/削除、更新し、これらの操作のそれぞれが完了したときに通知を受け取ることができるようにしたい: 私はこの関数を作成しました:
void collectionOfClientssChanged(object sender, NotifyCollectionChangedEventArgs e)
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
//Ajouter dans la base de données :
for(int i = 0; i<e.NewItems.Count;i++)
{
ClientVM item = e.NewItems[i] as ClientVM;
contexte.ListOfClientsToAdd.Add(item.Client);
}
break;
case NotifyCollectionChangedAction.Remove:
for(int i = 0; i < e.OldItems.Count; i++)
{
ClientVM item = e.OldItems[i] as ClientVM;
contexte.ListOfClientsToRemove.Add(item.Client);
}
break;
case NotifyCollectionChangedAction.Replace:
for(int i = 0; i < e.OldItems.Count; i++)
{
ClientVM item = e.OldItems[i] as ClientVM;
contexte.ListOfClientsToUpdate.Add(item.Client);
}
break;
}
}
次に、3 つのリスト (ListOfClientsToUpdate、ListOfClientsToRemove、ListOfClientsToAdd) を使用して変更のトレースを保持し、すべての変更を一度データベースにプッシュできるようにします。
問題は、 datagrid で行を追加または削除すると、通知が表示され、リストが要素で満たされるのに、既存の行の内容を更新すると、コレクションの変更に関する通知さえ表示されないことです! !! そのため、既存の要素に対する変更の痕跡を残すことができません!
何か案が ?どうもありがとう :) :)