Exemplo n.º 1
0
        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>");
        }