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); } }
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); }