5

私はC#とXMALでWindows8用のシンプルなrssリーダーアプリを構築しています。

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

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から中程度のHTMLの場合は実行できます。MSDNでこのサンプルプロジェクトを参照してください。

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

于 2012-08-06T22:51:41.943 に答える