2012-08-06 49 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