internal static void WriteStartHyperlink(XamlMarkdownWriter renderer, string url, string linkTitle) { // check for valid url if (!url.StartsWith("#") && !Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute)) { url = "#"; } renderer.WriteStartObject(typeof(Hyperlink)); renderer.WriteResourceMember(null, MarkdownXaml.HyperlinkStyleKey); //renderer.WriteMember(Hyperlink.CommandProperty, Commands.Hyperlink); //renderer.WriteMember(Hyperlink.CommandParameterProperty, url); renderer.WriteMember(Hyperlink.NavigateUriProperty, renderer.GetUri(new Uri(url, UriKind.RelativeOrAbsolute))); renderer.WriteMember(FrameworkContentElement.ToolTipProperty, String.IsNullOrEmpty(linkTitle) ? url : linkTitle); } // proc WriteStartHyperlink
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