Exemplo n.º 1
0
        public virtual void RegisterChildSuspendedLayout(RadElement element, PerformLayoutType performLayoutType)
        {
            //Debug.WriteLine("RegisterChildSuspendedLayout, " + this.element.GetType().Name);
            //this.element.SuspendedChildren.Add(new ElementLayoutData(element, performLayoutType));

            if (this.element.SuspendedChildren.ContainsKey(element))
            {
                ElementLayoutData elementLayoutData = this.element.SuspendedChildren[element];
                if (elementLayoutData.Performed)
                {
                    elementLayoutData.Performed         = false;
                    elementLayoutData.PerformLayoutType = performLayoutType;
                }
                else
                {
                    if (performLayoutType == PerformLayoutType.Parent)
                    {
                        elementLayoutData.PerformLayoutType = PerformLayoutType.Parent;
                    }
                    else if ((elementLayoutData.PerformLayoutType != PerformLayoutType.Parent) &&
                             (performLayoutType == PerformLayoutType.SelfExplicit))
                    {
                        elementLayoutData.PerformLayoutType = PerformLayoutType.SelfExplicit;
                    }
                }
            }
            else
            {
                this.element.SuspendedChildren.Add(element, new ElementLayoutData(element, performLayoutType));
            }
        }
Exemplo n.º 2
0
        private void PerformRegisteredSuspendedLayout(ElementLayoutData elementLayoutData)
        {
            if (elementLayoutData.Element.ElementState != ElementState.Loaded)
            {
                return;
            }

            elementLayoutData.Performed = true;

            if (elementLayoutData.PerformLayoutType == PerformLayoutType.Parent)
            {
                elementLayoutData.Element.LayoutEngine.PerformParentLayout();
            }
            else
            {
                elementLayoutData.Element.LayoutEngine.PerformLayout(elementLayoutData.Element, (elementLayoutData.PerformLayoutType == PerformLayoutType.SelfExplicit));
            }
        }
Exemplo n.º 3
0
        private ElementLayoutData GetTopMostPerformingParentData(RadElement element)
        {
            ElementLayoutData topMostData = null;
            RadElement        parent      = element.Parent;

            while ((parent != this.element) && (parent != null))
            {
                if (this.element.SuspendedChildren.ContainsKey(parent))
                {
                    ElementLayoutData tempData = this.element.SuspendedChildren[parent];
                    if (!tempData.Performed)
                    {
                        topMostData = tempData;
                    }
                }

                parent = parent.Parent;
            }
            return(topMostData);
        }
Exemplo n.º 4
0
        public virtual void PerformRegisteredSuspendedLayouts()
        {
            //Debug.WriteLine("PerformRegisteredSuspendedLayouts, " + this.element.GetType().Name);
            foreach (KeyValuePair <RadElement, ElementLayoutData> keyValuePair in this.element.SuspendedChildren)
            {
                ElementLayoutData elementLayoutData = keyValuePair.Value;
                if (elementLayoutData.Performed)
                {
                    continue;
                }

                ElementLayoutData topMostData = GetTopMostPerformingParentData(elementLayoutData.Element);

                while (topMostData != null)
                {
                    PerformRegisteredSuspendedLayout(topMostData);
                    topMostData = GetTopMostPerformingParentData(elementLayoutData.Element);
                }
                PerformRegisteredSuspendedLayout(elementLayoutData);

                if (this.element.SuspendedChildren.Count == 0)
                {
                    return;
                }
            }

/*
 *                      foreach (ElementLayoutData elementLayoutData in this.element.SuspendedChildren)
 *                      {
 *                              RadElement element = elementLayoutData.Element;
 *                              if (elementLayoutData.PerformLayoutType == PerformLayoutType.Parent)
 *                                      element.LayoutEngine.PerformParentLayout();
 *                              else
 *                                      element.LayoutEngine.PerformLayout(element, (elementLayoutData.PerformLayoutType == PerformLayoutType.SelfExplicit));
 *                      }
 */
            //this.element.SuspendedChildren = new List<ElementLayoutData>();
            this.element.SuspendedChildren.Clear();
        }