예제 #1
0
        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
예제 #2
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