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