Пример #1
0
 private void UpdateSelfReferenceLayout()
 {
     if (this.SelfReferenceLayout != null)
     {
         this.SelfReferenceLayout.CreateCellElements(this);
     }
     else
     {
         if (this.IsFirstDataCell)
         {
             return;
         }
         GridDataRowElement rowElement = this.RowElement as GridDataRowElement;
         if (rowElement == null)
         {
             return;
         }
         SelfReferenceCellLayout selfReferenceLayout = rowElement.SelfReferenceLayout;
         if (selfReferenceLayout == null)
         {
             return;
         }
         StackLayoutElement stackLayoutElement = selfReferenceLayout.StackLayoutElement;
         if (stackLayoutElement == null || stackLayoutElement.Parent != this)
         {
             return;
         }
         this.Children.Remove((RadElement)stackLayoutElement);
     }
 }
Пример #2
0
        protected override SizeF ArrangeOverride(SizeF finalSize)
        {
            RectangleF clientRectangle = this.GetClientRectangle(finalSize);
            SelfReferenceCellLayout selfReferenceLayout = this.SelfReferenceLayout;
            GridDataRowElement      rowElement          = this.RowElement as GridDataRowElement;

            if (this.ViewTemplate != null && this.ViewTemplate.IsSelfReference && (rowElement != null && this.ColumnInfo.OwnerTemplate != null))
            {
                if (selfReferenceLayout != null)
                {
                    rowElement.SelfReferenceLayout.StackLayoutElement.Visibility = ElementVisibility.Visible;
                }
                else
                {
                    rowElement.SelfReferenceLayout.StackLayoutElement.Visibility = ElementVisibility.Collapsed;
                }
            }
            if (selfReferenceLayout != null)
            {
                this.ArrangeSelfReferencePanel(finalSize, ref clientRectangle);
            }
            if (this.IsLeftMost && selfReferenceLayout == null && (rowElement != null && rowElement.SelfReferenceLayout != null))
            {
                int width = (int)rowElement.SelfReferenceLayout.StackLayoutElement.DesiredSize.Width;
                if (this.RightToLeft)
                {
                    clientRectangle.Width -= (float)width;
                }
                else
                {
                    clientRectangle.X     += (float)width;
                    clientRectangle.Width -= (float)width;
                }
            }
            this.Layout.Arrange(clientRectangle);
            foreach (RadElement child in this.Children)
            {
                if (selfReferenceLayout == null || selfReferenceLayout.StackLayoutElement != child)
                {
                    this.ArrangeElement(child, finalSize, clientRectangle);
                }
            }
            if (this.editor != null)
            {
                this.ArrangeEditorElement(finalSize, clientRectangle);
            }
            return(finalSize);
        }