コード例 #1
0
 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);
 }
コード例 #2
0
        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);
        }
コード例 #3
0
 public override void OnViewNodeInvalidating(IInstanceBuilderContext context, ViewNode target, ViewNode child, ref bool doesInvalidRootsContainTarget, List <ViewNode> invalidRoots)
 {
     InstanceBuilderOperations.SetInvalid(context, target, ref doesInvalidRootsContainTarget, invalidRoots);
 }