예제 #1
0
        public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata)
        {
            var element = new PrintElementParagraph
            {
                Margin  = BuildHelper.DefaultMargin,
                Padding = BuildHelper.DefaultPadding
            };

            BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyTextProperties(element, elementMetadata);

            BuildHelper.ApplyBlockProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyBlockProperties(element, elementMetadata);

            ApplyIndent(element, elementMetadata);

            // Генерация содержимого элемента

            var contentContext = CreateContentContext(element, buildContext);
            var inlines        = buildContext.ElementBuilder.BuildElements(contentContext, elementMetadata.Inlines);

            if (inlines != null)
            {
                foreach (var inline in inlines)
                {
                    element.Inlines.Add(inline);
                }
            }

            BuildHelper.PostApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.PostApplyTextProperties(element, elementMetadata);

            return(element);
        }
예제 #2
0
        public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata)
        {
            var element = new PrintElementPageBreak();

            BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyTextProperties(element, elementMetadata);

            BuildHelper.ApplyBlockProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyBlockProperties(element, elementMetadata);

            return(element);
        }
        public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata)
        {
            var element = new PrintElementLine
            {
                Border = new PrintElementBorder
                {
                    Thickness = new PrintElementThickness(0, 0, 0, 1),
                    Color     = "Black"
                }
            };

            BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyTextProperties(element, elementMetadata);

            BuildHelper.ApplyBlockProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyBlockProperties(element, elementMetadata);

            return(element);
        }
        public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata)
        {
            var element = new PrintElementTable
            {
                Border = new PrintElementBorder
                {
                    Thickness = new PrintElementThickness(1, 1, 0, 0),
                    Color     = PrintElementColors.Black
                },
                Margin  = BuildHelper.DefaultMargin,
                Padding = BuildHelper.DefaultPadding,
            };

            BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyTextProperties(element, elementMetadata);

            BuildHelper.ApplyBlockProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyBlockProperties(element, elementMetadata);

            // Генерация стобцов таблицы

            CreateTableColumns(buildContext, element, elementMetadata.Columns);

            // Генерация заголовка таблицы

            bool showHeader;

            if (!ConvertHelper.TryToBool(elementMetadata.ShowHeader, out showHeader) || showHeader)
            {
                var tableRow = CreateHeaderTableRow(buildContext, element, elementMetadata.Columns);
                element.Rows.Add(tableRow);
            }

            // Генерация явно объявленных строк таблицы

            CreateStaticTableRows(buildContext, element, elementMetadata.Rows);

            // Генерация строк таблицы по данным источника

            var tableSource = buildContext.ElementSourceValue;

            if (ConvertHelper.ObjectIsCollection(tableSource))
            {
                if (HasCellTemplate(elementMetadata.Columns))
                {
                    foreach (var rowSource in (IEnumerable)tableSource)
                    {
                        var tableRow = CreateDynamicTableRow(buildContext, element, elementMetadata.Columns, rowSource);
                        element.Rows.Add(tableRow);
                    }
                }
            }
            else if (buildContext.IsDesignMode)
            {
                // Отображение шаблона строки в дизайнере

                if (HasCellTemplate(elementMetadata.Columns))
                {
                    var tableRow = CreateDynamicTableRow(buildContext, element, elementMetadata.Columns, null);
                    element.Rows.Add(tableRow);
                }
            }

            BuildHelper.PostApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.PostApplyTextProperties(element, elementMetadata);

            return(element);
        }
예제 #5
0
        public object Create(PrintElementBuildContext buildContext, dynamic elementMetadata)
        {
            var element = new PrintElementList
            {
                Margin      = BuildHelper.DefaultMargin,
                Padding     = BuildHelper.DefaultPadding,
                MarkerStyle = PrintElementListMarkerStyle.None
            };

            BuildHelper.ApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyTextProperties(element, elementMetadata);

            BuildHelper.ApplyBlockProperties(element, buildContext.ElementStyle);
            BuildHelper.ApplyBlockProperties(element, elementMetadata);

            ApplyStartIndex(element, elementMetadata.StartIndex);
            ApplyMarkerStyle(element, elementMetadata.MarkerStyle);
            MarkerOffsetStyle(element, elementMetadata.MarkerOffsetSize, elementMetadata.MarkerOffsetSizeUnit);

            var itemContext = CreateItemContext(element, buildContext);

            // Генерация явно объявленных элементов списка

            var staticItems = buildContext.ElementBuilder.BuildElements(itemContext, elementMetadata.Items);

            if (staticItems != null)
            {
                foreach (var staticItem in staticItems)
                {
                    var listItem = new PrintElementSection();
                    listItem.Blocks.Add(staticItem);
                    element.Items.Add(listItem);
                }
            }

            // Генерация элементов списка по данным источника

            var listItemTemplate = elementMetadata.ItemTemplate;
            var listSource       = buildContext.ElementSourceValue;

            if (listItemTemplate != null)
            {
                if (ConvertHelper.ObjectIsCollection(listSource))
                {
                    foreach (var itemSource in (IEnumerable)listSource)
                    {
                        itemContext.ElementSourceValue = itemSource;

                        var dynamicItem = buildContext.ElementBuilder.BuildElement(itemContext, listItemTemplate);

                        if (dynamicItem is PrintElementBlock)
                        {
                            var listItem = new PrintElementSection();
                            listItem.Blocks.Add(dynamicItem);
                            element.Items.Add(listItem);
                        }
                    }
                }
                else if (buildContext.IsDesignMode)
                {
                    // Отображение шаблона элемента в дизайнере

                    itemContext.ElementSourceValue = null;

                    var dynamicItem = buildContext.ElementBuilder.BuildElement(itemContext, listItemTemplate);

                    if (dynamicItem is PrintElementBlock)
                    {
                        var listItem = new PrintElementSection();
                        listItem.Blocks.Add(dynamicItem);
                        element.Items.Add(listItem);
                    }
                }
            }

            BuildHelper.PostApplyTextProperties(element, buildContext.ElementStyle);
            BuildHelper.PostApplyTextProperties(element, elementMetadata);

            return(element);
        }