2012-08-06 54 views
5

我正在C#和XMAL中为Windows 8构建一个简单的rss阅读器应用程序。Windows 8 Metro RichTextColumns嵌入超链接和图像

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

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

因此我将Content属性绑定到使用HtmlUtilities.ConvertToText解析html内容中的文本的富文本块。

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

有没有办法做到这一点?我可以使用 Html Agility Pack的地铁端口解析图像和超链接,但有什么方法可以嵌入这些超链接和图像吗?对于图像,我正在考虑添加到richtextcolumns类,因此在创建新列时,在添加之前添加了一个图像。这可能会起作用,但在每列开头的图像上会很糟糕。

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

回答

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

你可以做一个类似的思考与图片

+0

,你会在哪里使用这个功能吗?作为原始文章中提到的Html Agility Pack解析的一部分? – SimpsOff 2013-04-08 16:40:32