public object Clone() { var clone = new ObservableDummyTestObject(); clone.Title = Title; clone.TimesheetId = TimesheetId; clone.ProjectTimeItems = new ObservableCollection <ObservableProjectTaskTimesheetItem>(); foreach (var item in ProjectTimeItems) { clone.ProjectTimeItems.Add(item); } clone.NonProjectActivityItems = new ObservableCollection <ObservableProjectTaskTimesheetItem>(); foreach (var item in NonProjectActivityItems) { clone.NonProjectActivityItems.Add(item); } clone.RequiredHours = new ObservableCollection <TimeSpan>(); foreach (var item in RequiredHours) { clone.RequiredHours.Add(item); } clone.TotalRequiredHours = TotalRequiredHours; clone.DummyTimeEntry = (ObservableTimeEntry)DummyTimeEntry.Clone(); clone.DummyValueTypeCollection = new ObservableCollection <int>(); foreach (var item in DummyValueTypeCollection) { clone.DummyValueTypeCollection.Add(item); } clone.AttachEventHandlers(); clone.AcceptChanges(); return(clone); }
// This is only called after Clone() (so no need to unhook handlers). Need to refactor so that ResetProperties calls this public void AttachEventHandlers() { foreach (var item in ProjectTimeItems) { item.PropertyChanged += ProjectTimeItems_Item_PropertyChanged; item.AttachEventHandlers(); } foreach (var item in NonProjectActivityItems) { item.PropertyChanged += NonProjectActivityItems_Item_PropertyChanged; item.AttachEventHandlers(); } RequiredHours.CollectionChanged += RequiredHours_CollectionChanged; DummyTimeEntry.PropertyChanged += DummyTimeEntry_PropertyChanged; DummyTimeEntry.AttachEventHandlers(); DummyValueTypeCollection.CollectionChanged += DummyValueTypeCollection_CollectionChanged; }