public DocumentContainer Create(DependencyObject ctrl) { DocumentContainer container = null; if (ctrl is Grid) { container = new GridDocumentContainer(ctrl as Grid); } else if (ctrl is RowDefinition || ctrl is ColumnDefinition) { container = this; } else if (ctrl is Paragraph) { container = new ParagraphDocumentContainer(ctrl as Paragraph); } else if (ctrl is Span) { container = new SpanDocumentContainer(ctrl as Span); } else if (ctrl is GridRow) { container = new GridRowContainer(ctrl as GridRow); } else if (ctrl is GridColumn) { container = new GridColumnContainer(ctrl as GridColumn); } if (container != null) { container.Parent = this; } return(container); }
private void WriteFragments(HtmlFragment fragment, DocumentContainer parentContainer) { if (parentContainer != null) { foreach (var childFragment in fragment.Fragments) { var writer = HtmlWriterFactory.Find(childFragment); var ctrl = writer?.GetControl(childFragment); if (ctrl != null) { if (!parentContainer.CanContain(ctrl)) { var antecesorContainer = parentContainer.Find(ctrl); if (antecesorContainer == null) { continue; } else { parentContainer = antecesorContainer; } } var currentContainer = parentContainer.Append(ctrl); WriteFragments(childFragment, currentContainer); writer?.ApplyStyles(_docStyles, ctrl, childFragment); } } } }