2012-08-06 13 views
5

Buduję prostą aplikację do odczytu rss dla Windows 8 w C# i XMAL.Windows 8 Metro RichTextColumns zawierają hiperłącza i obrazy

Źródło danych zwraca treść HTML dla treści artykułu.

Tworzę stronę ItemDetailPage i zawiera ona kolumny RichTextBlock do wyświetlania kolumn tekstu - które wyglądają świetnie.

Powiążam właściwość Zawartość z blokiem tekstu sformatowanego, który korzysta z HtmlUtilities.ConvertToText w celu analizowania tekstu z treści html.

To działa dobrze. Jednak nadal chcę mieć hiperłącza i obrazy w treści. Pierwotnie używałem WebView i NavigateToString, ale nie możesz używać kolumn, więc otrzymasz długą stronę tekstu, której nie chcę.

Czy istnieje sposób, aby to zrobić? Mogę analizować obrazy i hiperlinki za pomocą portu Metro w pakiecie Agility Pack Html, ale czy istnieje sposób na osadzenie tych hiperłączy i obrazów? W przypadku obrazów rozważałem dodanie do klasy richtextcolumns, więc podczas tworzenia nowej kolumny, przed jej dodaniem, dodano obraz. To może zadziałać, ale będzie straszne z obrazem na początku każdej kolumny.

Czy ktoś ma jakieś pomysły, jak można to osiągnąć? Byłbym podobny do projektu aplikacji newsów contoso mają one http://msdn.microsoft.com/en-us/library/windows/apps/hh868272.aspx. Jeśli przejdziesz do strony z artykułem, mają one cytat blokowy w treści artykułu.

Odpowiedz

4

RichTextBlock zawiera zbiór Akapity i akapitu znajduje się lista inlines. Inlines to zazwyczaj Runs, ale możesz także użyć InlineUIContainer jako wbudowanego. InlineUIContainer ma dziecko, które może za pomocą dowolnego elementu XAML, hiperłącza lub obrazu.

ja osobiście używać tej funkcji do konwertowania hiperłącze z html do Inline:

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

można zrobić podobny myśleć z obrazem

+0

Jeżeli chcesz korzystać z tej funkcji? W ramach parsowania z dodatkiem Html Agility Pack w oryginalnym wpisie? – SimpsOff

Powiązane problemy