public object Clone() { var clone = new ObservableProjectTaskTimesheetItem(); clone.ProjectCode = (ObservablePickListItem)ProjectCode.Clone(); clone.TaskCode = (ObservablePickListItem)TaskCode.Clone(); clone.TimeEntries = new ObservableCollection <ObservableTimeEntry>(); foreach (var item in TimeEntries) { clone.TimeEntries.Add(item); } clone.AttachEventHandlers(); clone.AcceptChanges(); return(clone); }