protected override void Write(XamlMarkdownWriter renderer, LinkInline link)
        {
            var url = link.GetDynamicUrl != null?link.GetDynamicUrl() ?? link.Url : link.Url;

            if (link.IsImage)
            {
                if (!Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute))
                {
                    url = "#";
                }

                renderer.WriteStartObject(typeof(Image));
                renderer.WriteResourceMember(null, MarkdownXamlStyle.Image);
                if (!String.IsNullOrEmpty(link.Title))
                {
                    renderer.WriteMember(ToolTipService.ToolTipProperty, link.Title);
                }
                renderer.WriteMember(Image.SourceProperty, new Uri(url, UriKind.RelativeOrAbsolute));
                renderer.WriteEndObject();
            }
            else
            {
                WriteStartHyperlink(renderer, url, link.Title);
                renderer.WriteItems(link);
                WriteEndHyperlink(renderer);
            }
        }         // proc Write
        }         // proc WriteSpan

        protected override void Write(XamlMarkdownWriter renderer, EmphasisInline span)
        {
            if (WriteSpan(renderer, span))
            {
                renderer.WriteItems(span);
                renderer.WriteEndObject();
            }
            else
            {
                renderer.WriteChildren(span);
            }
        } // proc Write
예제 #3
0
        protected override void Write(XamlMarkdownWriter renderer, AutolinkInline link)
        {
            var url   = link.Url;
            var title = url;

            if (link.IsEmail)
            {
                url = "mailto:" + url;
            }

            LinkInlineRenderer.WriteStartHyperlink(renderer, url, title);
            renderer.WriteItems(title);
            LinkInlineRenderer.WriteEndHyperlink(renderer);
        } // proc Write
예제 #4
0
        protected override void Write(XamlMarkdownWriter renderer, LinkInline link)
        {
            var url = link.GetDynamicUrl != null?link.GetDynamicUrl() ?? link.Url : link.Url;

            if (link.IsImage)
            {
                if (!Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute))
                {
                    url = "#";
                }

                renderer.WriteStartObject(typeof(Image));
                renderer.WriteResourceMember(null, MarkdownXamlStyle.Image);
                if (!String.IsNullOrEmpty(link.Title))
                {
                    renderer.WriteMember(ToolTipService.ToolTipProperty, link.Title);
                }
                renderer.WriteMember(Image.SourceProperty, renderer.GetUri(new Uri(url, UriKind.RelativeOrAbsolute), false));

                var attr = link.TryGetAttributes();
                if (attr.TryGetPropertyInt32("width", out var width))
                {
                    renderer.WriteMember(FrameworkElement.WidthProperty, width);
                }
                if (attr.TryGetPropertyInt32("height", out var height))
                {
                    renderer.WriteMember(FrameworkElement.HeightProperty, height);
                }

                renderer.WriteEndObject();
            }
            else
            {
                WriteStartHyperlink(renderer, url, link.Title);
                renderer.WriteItems(link);
                WriteEndHyperlink(renderer);
            }
        }         // proc Write
예제 #5
0
        protected override void Write(XamlMarkdownWriter renderer, MdTable table)
        {
            renderer.WriteStartObject(typeof(WpfTable));
            renderer.WriteResourceMember(null, MarkdownXamlStyle.Table);
            var t = new WpfTable();

            renderer.WriteStartItems(nameof(WpfTable.Columns));
            foreach (var col in table.ColumnDefinitions)
            {
                renderer.WriteStartObject(typeof(WpfTableColumn));
                renderer.WriteMember(nameof(WpfTableColumn.Width),
                                     (col?.Width ?? 0) != 0
                        ? new GridLength(col.Width, GridUnitType.Star)
                        : GridLength.Auto
                                     );
                renderer.WriteEndObject();
            }
            renderer.WriteEndItems();

            renderer.WriteStartItems(nameof(WpfTable.RowGroups));
            renderer.WriteStartObject(typeof(WpfTableRowGroup));
            renderer.WriteStartItems(nameof(WpfTableRowGroup.Rows));

            foreach (var c in table)
            {
                var row = (MdTableRow)c;
                renderer.WriteStartObject(typeof(WpfTableRow));
                if (row.IsHeader)
                {
                    renderer.WriteResourceMember(null, MarkdownXamlStyle.TableHeader);
                }
                renderer.WriteStartItems(nameof(WpfTableRow.Cells));

                for (var i = 0; i < row.Count; i++)
                {
                    var cell = (MdTableCell)row[i];
                    renderer.WriteStartObject(typeof(WpfTableCell));
                    renderer.WriteResourceMember(null, MarkdownXamlStyle.TableCell);

                    if (cell.ColumnSpan > 1)
                    {
                        renderer.WriteMember(nameof(WpfTableCell.ColumnSpan), cell.ColumnSpan);
                    }
                    if (cell.RowSpan > 1)
                    {
                        renderer.WriteMember(nameof(WpfTableCell.RowSpan), cell.RowSpan);
                    }

                    var columnIndex = cell.ColumnIndex < 0 || cell.ColumnIndex >= table.ColumnDefinitions.Count ? i : cell.ColumnIndex;
                    columnIndex = columnIndex >= table.ColumnDefinitions.Count ? table.ColumnDefinitions.Count - 1 : columnIndex;
                    var alignment = table.ColumnDefinitions[columnIndex].Alignment;
                    if (alignment.HasValue)
                    {
                        switch (alignment)
                        {
                        case TableColumnAlign.Center:
                            renderer.WriteMember(nameof(WpfTableCell.TextAlignment), TextAlignment.Center);
                            break;

                        case TableColumnAlign.Right:
                            renderer.WriteMember(nameof(WpfTableCell.TextAlignment), TextAlignment.Right);
                            break;

                        case TableColumnAlign.Left:
                            renderer.WriteMember(nameof(WpfTableCell.TextAlignment), TextAlignment.Left);
                            break;
                        }
                    }

                    renderer.WriteItems(cell);

                    renderer.WriteEndObject();
                }

                renderer.WriteEndItems();
                renderer.WriteEndObject();
            }

            renderer.WriteEndItems();
            renderer.WriteEndObject();
            renderer.WriteEndItems();

            renderer.WriteEndObject();
        } // proc Write