public override void OnViewNodeInvalidating(IInstanceBuilderContext context, ViewNode target, ViewNode child, ref bool doesInvalidRootsContainTarget, List <ViewNode> invalidRoots) { if (target.InstanceState.IsPropertyOrChildInvalid) { InstanceBuilderOperations.SetInvalid(context, target, ref doesInvalidRootsContainTarget, invalidRoots); } base.OnViewNodeInvalidating(context, target, child, ref doesInvalidRootsContainTarget, invalidRoots); }
public override void OnViewNodeInvalidating(IInstanceBuilderContext context, ViewNode target, ViewNode child, ref bool doesInvalidRootsContainTarget, List <ViewNode> invalidRoots) { InstanceState instanceState = target.InstanceState; if (target.Instance is DocumentNode && instanceState.IsPropertyInvalid && !instanceState.IsChildInvalid && !instanceState.IsDescendantInvalid) { IInstantiatedElementViewNode instantiatedElementViewNode = target as IInstantiatedElementViewNode; if (instantiatedElementViewNode != null && instantiatedElementViewNode.InstantiatedElements.First != null) { bool flag = true; using (IEnumerator <IProperty> enumerator = instanceState.InvalidProperties.GetEnumerator()) { do { if (!enumerator.MoveNext()) { break; } flag = this.IsIncrementalChange(context, target, enumerator.Current); }while (flag); } if (flag) { return; } } } bool flag1 = false; if (instanceState != InstanceState.Valid) { T instance = (T)(target.Instance as T); if (instance != null && this.IsSealed(instance)) { flag1 = true; } IInstantiatedElementViewNode instantiatedElementViewNode1 = target as IInstantiatedElementViewNode; if (instantiatedElementViewNode1 != null && instantiatedElementViewNode1.InstantiatedElements.First != null) { foreach (object instantiatedElement in instantiatedElementViewNode1.InstantiatedElements) { instance = (T)(instantiatedElement as T); if (instance == null || !this.IsSealed(instance)) { continue; } flag1 = true; break; } } } if (flag1) { InstanceBuilderOperations.SetInvalid(context, target, ref doesInvalidRootsContainTarget, invalidRoots); } base.OnViewNodeInvalidating(context, target, child, ref doesInvalidRootsContainTarget, invalidRoots); }
public override void OnViewNodeInvalidating(IInstanceBuilderContext context, ViewNode target, ViewNode child, ref bool doesInvalidRootsContainTarget, List <ViewNode> invalidRoots) { InstanceBuilderOperations.SetInvalid(context, target, ref doesInvalidRootsContainTarget, invalidRoots); }