2012-08-06 6 views
5

C#とXMALでWindows 8用のシンプルなRSSリーダーアプリを構築しています。Windows 8 Metro RichTextColumnsにハイパーリンクと画像が埋め込まれています

フィードは記事本文の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

関連する問題