public void CloneChanges(ObservableCollection <MetaField> changedFields, FieldChangeTracker tracker, FieldChangeSet changes) { for (int i = 0; i < changedFields.Count; i++) { MetaField field = changedFields[i]; var reflexive = field as ReflexiveData; bool changed = changes.HasChanged(field); if (field != null && (changed || reflexive != null)) { if (_fields[i] == null) { _fields[i] = field.CloneValue(); tracker.AttachTo(_fields[i]); if (changed) { tracker.MarkChanged(_fields[i]); } tracker.MarkUnchanged(field); if (reflexive != null) { reflexive.ResetPages(); } } else if (field != _fields[i]) { throw new InvalidOperationException("Cannot cache changes in a meta field from a different page"); } } } }
public void CloneChanges(ObservableCollection<MetaField> changedFields, FieldChangeTracker tracker, FieldChangeSet changes) { for (int i = 0; i < changedFields.Count; i++) { MetaField field = changedFields[i]; var reflexive = field as ReflexiveData; bool changed = changes.HasChanged(field); if (field != null && (changed || reflexive != null)) { if (_fields[i] == null) { _fields[i] = field.CloneValue(); tracker.AttachTo(_fields[i]); if (changed) tracker.MarkChanged(_fields[i]); tracker.MarkUnchanged(field); if (reflexive != null) reflexive.ResetPages(); } else if (field != _fields[i]) { throw new InvalidOperationException("Cannot cache changes in a meta field from a different page"); } } } }
public WrappedReflexiveEntry WrapField(MetaField field, double width, bool last) { _loadedFields.Add(field); _fieldVisibility.Add(true); _tracker.AttachTo(field); var wrapper = new WrappedReflexiveEntry(_loadedFields, _wrappers.Count, width, last); _wrappers.Add(wrapper); return(wrapper); }