private static void parseTable(StringBuilder xamlString, HtmlNode tableNode) { xamlString.Append("<InlineUIContainer>"); int currentRow = 0; int maxColumns = 0; CustomGrid tableGrid = new CustomGrid(); TextBlock caption = null; var cap = tableNode.Descendants("caption").FirstOrDefault(); if (cap != null) { caption = new TextBlock() { Text = cap.InnerText }; currentRow += 1; tableGrid.Children.Add(caption); tableGrid.RowDefinitions.Add(new RowDefinition()); } foreach (var row in tableNode.Descendants("tr")) { int colMax; tableGrid.RowDefinitions.Add(new RowDefinition()); int currentColumn = 0; foreach (var headerCell in row.Descendants("th")) { TextBlock cell = new TextBlock(); cell.FontWeight = FontWeights.Bold; colMax = setCellAttributes(currentRow, currentColumn, headerCell, cell); if (colMax > maxColumns) maxColumns = colMax; tableGrid.Children.Add(cell); currentColumn += 1; } foreach (var cell in row.Descendants("td")) { TextBlock textCell = new TextBlock(); colMax = setCellAttributes(currentRow, currentColumn, cell, textCell); if (colMax > maxColumns) maxColumns = colMax; tableGrid.Children.Add(textCell); currentColumn += 1; } currentRow += 1; } for (int xx = 0; xx <= maxColumns; xx++) { tableGrid.ColumnDefinitions.Add(new ColumnDefinition()); } if (maxColumns > 1 && caption != null) Grid.SetColumnSpan(caption, maxColumns); Dictionary<string, string> attr = new Dictionary<string, string>(); if (attributes.ContainsKey("table")) attr = attributes["table"]; string xaml = tableGrid.GetXaml(attr); xamlString.Append(xaml); xamlString.Append("</InlineUIContainer>"); }
private static void parseTable(StringBuilder xamlString, HtmlNode tableNode) { xamlString.Append("<InlineUIContainer>"); int currentRow = 0; int maxColumns = 0; CustomGrid tableGrid = new CustomGrid(); TextBlock caption = null; var cap = tableNode.Descendants("caption").FirstOrDefault(); if (cap != null) { caption = new TextBlock() { Text = cap.InnerText }; currentRow += 1; tableGrid.Children.Add(caption); tableGrid.RowDefinitions.Add(new RowDefinition()); } foreach (var row in tableNode.Descendants("tr")) { int colMax; tableGrid.RowDefinitions.Add(new RowDefinition()); int currentColumn = 0; foreach (var headerCell in row.Descendants("th")) { TextBlock cell = new TextBlock(); cell.FontWeight = FontWeights.Bold; colMax = setCellAttributes(currentRow, currentColumn, headerCell, cell); if (colMax > maxColumns) { maxColumns = colMax; } tableGrid.Children.Add(cell); currentColumn += 1; } foreach (var cell in row.Descendants("td")) { TextBlock textCell = new TextBlock(); colMax = setCellAttributes(currentRow, currentColumn, cell, textCell); if (colMax > maxColumns) { maxColumns = colMax; } tableGrid.Children.Add(textCell); currentColumn += 1; } currentRow += 1; } for (int xx = 0; xx <= maxColumns; xx++) { tableGrid.ColumnDefinitions.Add(new ColumnDefinition()); } if (maxColumns > 1 && caption != null) { Grid.SetColumnSpan(caption, maxColumns); } Dictionary <string, string> attr = new Dictionary <string, string>(); if (attributes.ContainsKey("table")) { attr = attributes["table"]; } string xaml = tableGrid.GetXaml(attr); xamlString.Append(xaml); xamlString.Append("</InlineUIContainer>"); }