コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: HtmlBlock.cs プロジェクト: ridomin/waslibs
        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);
                    }
                }
            }
        }