Esempio n. 1
0
        protected override void Write(MarkdownRenderer renderer, Table obj)
        {
            if (obj == null || renderer == null)
            {
                return;
            }

            var  result         = new Grid();
            bool hasColumnWidth = obj.ColumnDefinitions?.Any(a => a.Width != 0.0f && a.Width != 1.0f) ?? false;

            if (hasColumnWidth)
            {
                result.ColumnDefinitions = new ColumnDefinitionCollection();
                foreach (var item in obj.ColumnDefinitions)
                {
                    result.ColumnDefinitions.Add(new ColumnDefinition()
                    {
                        Width = item.Width
                    });
                }
            }

            int rowCount = 0;

            foreach (var item in obj)
            {
                var row = (TableRow)item;
                for (int columnCount = 0; columnCount < row.Count; columnCount++)
                {
                    var cell = row[columnCount] as TableCell;

                    var stack = new StackLayout();
                    renderer.TemporaryTargetLayout = stack;
                    renderer.AddLayout(stack, renderer.Theme.GetStyleFromStyleId(
                                           row.IsHeader ? Themes.Theme.StyleId.TableCellHeader : Themes.Theme.StyleId.TableCellBody));
                    renderer.Write(cell);
                    renderer.CloseLayout();
                    result.Children.Add(stack, columnCount, rowCount);
                }
                rowCount++;
            }
        }