Esempio n. 1
0
        private Inline Fill(CommonMark.Syntax.Inline firstChild)
        {
            var span = new Span();

            while (firstChild != null)
            {
                span.Inlines.Add(Convert(firstChild));
                firstChild = firstChild.NextSibling;
            }
            return(span);
        }
Esempio n. 2
0
        private Inline Convert(CommonMark.Syntax.Inline inline)
        {
            switch (inline.Tag)
            {
            case InlineTag.String:
                return(new Run(inline.LiteralContent));

            case InlineTag.SoftBreak:
                return(new LineBreak());

            case InlineTag.LineBreak:
                return(new LineBreak());

            case InlineTag.Code:
            case InlineTag.RawHtml:
                return(new Run(inline.LiteralContent)
                {
                    FontFamily = new FontFamily("GlobalMonospace.CompositeFont")
                });

            case InlineTag.Emphasis:
                return(new Italic(Fill(inline.FirstChild)));

            case InlineTag.Strong:
                return(new Bold(Fill(inline.FirstChild)));

            case InlineTag.Link:
                var link = new Hyperlink(Fill(inline.FirstChild))
                {
                    NavigateUri = new Uri(inline.TargetUrl),
                    ToolTip     = string.IsNullOrWhiteSpace(inline.LiteralContent) ? null : inline.LiteralContent
                };
                link.RequestNavigate += NavigateToUri;
                return(link);

            case InlineTag.Image:
                return(new InlineUIContainer(new Image
                {
                    Source = (ImageSource) new ImageSourceConverter().ConvertFrom(null, CultureInfo.InvariantCulture, inline.TargetUrl),
                    ToolTip = string.IsNullOrWhiteSpace(inline.LiteralContent) ? null : inline.LiteralContent
                }));

            case InlineTag.Strikethrough:
                return(new Span(Fill(inline.FirstChild))
                {
                    TextDecorations = TextDecorations.Strikethrough
                });

            case InlineTag.Placeholder:
                return(new Run(inline.LiteralContent));
            }

            throw new NotImplementedException();
        }