Windows 8 Metro RichTextColumns嵌入了超链接和图像

Ter*_*rry 5 c# xaml microsoft-metro windows-8

我正在为C#和XMAL中的Windows 8构建一个简单的rss阅读器应用程序.

Feed返回文章正文的html内容.

我创建了一个ItemDetailPage,在其中,它使用RichTextBlock列来显示文本列 - 看起来很棒.

所以我将Content属性绑定到富文本块,该块使用HtmlUtilities.ConvertToText来解析html内容中的文本.

这很好用.但是我仍然希望在内容中包含超链接和图像.最初我使用的是WebView和NavigateToString但是你不能使用列,所以得到一长页文本,这是我不想要的.

有没有办法做到这一点?我可以使用Html Agility Pack的metro端口解析图像和超链接,但有没有办法嵌入这些超链接和图像?对于图像,我考虑添加到richtextcolumns类,因此在创建新列时,在添加之前,它添加了一个图像.这可能有效,但在每列开头的图像都会很糟糕.

有没有人有任何想法如何实现这一目标?我将类似于他们已经拥有的contoso新闻应用程序设计http://msdn.microsoft.com/en-us/library/windows/apps/hh868272.aspx.如果您滚动到文章页面,他们在文章内容中有一个块引用.

Igo*_*man 4

RichTextBlock 包含段落的集合,段落是内联列表。内联通常是运行,但您也可以使用 InlineUIContainer 作为内联。InlineUIContainer 有一个子级,可以包含您想要的任何 XAML 元素、超链接或图像。

我个人使用这个函数将超链接从 html 转换为内联:

    public void AddLink(XElement element)
    {
        var link = element.Attribute("href").Value;

        InlineUIContainer uc = new InlineUIContainer();
        TextBlock tb = new TextBlock();
        tb.Margin = new Thickness(0, 0, 0, 0);
        var run = new Run();
        run.Text = element.Value;
        tb.Inlines.Add(run);
        tb.Tapped += (s, e) =>
        {
            Launcher.LaunchUriAsync(new Uri(link, UriKind.Absolute));
        };
        uc.Child = tb;
        paragraph.Inlines.Add(uc);
    }
Run Code Online (Sandbox Code Playgroud)

您可以使用图像进行类似的思考