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
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
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
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