private void LandingSiteCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { LandingSite editedLandingSite = new LandingSite(); switch (e.Action) { case NotifyCollectionChangedAction.Add: { int newIndex = e.NewStartingIndex; editedLandingSite = LandingSiteCollection[newIndex]; LandingSites.Add(editedLandingSite); } break; case NotifyCollectionChangedAction.Remove: { List <LandingSite> tempListOfRemovedItems = e.OldItems.OfType <LandingSite>().ToList(); editedLandingSite = tempListOfRemovedItems[0]; LandingSites.Delete(editedLandingSite.LandingSiteID); } break; case NotifyCollectionChangedAction.Replace: { List <LandingSite> tempListOfLandingSites = e.NewItems.OfType <LandingSite>().ToList(); editedLandingSite = tempListOfLandingSites[0]; LandingSites.Update(editedLandingSite); // As the IDs are unique, only one row will be effected hence first index only } break; } EntityChangedEventArgs args = new EntityChangedEventArgs(editedLandingSite.GetType().Name, editedLandingSite); EntityChanged?.Invoke(this, args); }
private void ProjectSettings_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { ProjectSetting editedEntity = new ProjectSetting(); switch (e.Action) { case NotifyCollectionChangedAction.Add: { int newIndex = e.NewStartingIndex; editedEntity = ProjectSettingCollection[newIndex]; if (ProjectSettings.Add(editedEntity)) { EditedEntity = new EditedEntity(EditAction.Add, editedEntity); } } break; case NotifyCollectionChangedAction.Remove: { List <ProjectSetting> tempListOfRemovedItems = e.OldItems.OfType <ProjectSetting>().ToList(); editedEntity = tempListOfRemovedItems[0]; if (ProjectSettings.Delete(editedEntity.ProjectID)) { EditedEntity = new EditedEntity(EditAction.Delete, editedEntity); } } break; case NotifyCollectionChangedAction.Replace: { List <ProjectSetting> tempListOfProjectSettings = e.NewItems.OfType <ProjectSetting>().ToList(); editedEntity = tempListOfProjectSettings[0]; if (ProjectSettings.Update(tempListOfProjectSettings[0])) // As the IDs are unique, only one row will be effected hence first index only { EditedEntity = new EditedEntity(EditAction.Update, editedEntity); } } break; } EntityChangedEventArgs args = new EntityChangedEventArgs(editedEntity.GetType().Name, editedEntity); EntityChanged?.Invoke(this, args); }