5

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

提要返回文章正文的 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。如果您滚动到文章页面,他们在文章内容中有一个块引用。

4

2 回答 2

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);
    }

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

于 2012-10-26T21:34:28.850 回答
0

这并不容易,但对于简单到适度的 HTML,它可以完成。请参阅 MSDN 上的此示例项目:

http://code.msdn.microsoft.com/windowsapps/RTF-TO-HTML-TO-RTF-in-11ec0bd7

于 2012-08-06T22:51:41.943 回答