虚拟化翻转视图中的XAML RichTextBlock

时间:2012-10-26 18:19:18

标签: c# xaml windows-8 microsoft-metro

我一直在寻找有关将html内容绑定到我的项目详细信息页面上的翻转视图中的richtext块的帮助的帮助,并且无法找到有关如何做我所追求的任何信息。

我正在构建一个简单的新闻阅读器应用程序,它从我想要在我的flipview中显示的Feed中获取html内容。

我创建了一个新的默认项目详细信息页面并绑定了我的集合:

this.DefaultViewModel["Group"] = feedItem.Category;
this.DefaultViewModel["Items"] = feedItem.Category.Items;
this.flipView.SelectedItem = feedItem; 

然后在我的flipview的DataTemplate中:

<common:RichTextColumns x:Name="richTextColumns" Margin="117,0,117,47">
    <RichTextBlock x:Name="richTextBlock" Width="560" Style="{StaticResource ItemRichTextStyle}">
        <Paragraph>
            <Run FontWeight="SemiLight" Text="{Binding Content}"/>
        </Paragraph> ...

Content是我模型中的字符串属性,我使用HtmlUtilities.ConvertToText(html)

完美无缺。但是,我需要文章中的图像和标题(h1,h2等)。

我的问题是实现这一目标的最佳方法是什么?

解析html并创建运行,包含图像等的内联ui容器不是问题。我正在使用html敏捷包,但我的问题是如何将这些元素添加到richtextblocks块集合中?

我尝试加载翻转视图上的事件,然后获取当前翻转视图依赖项对象(this.flipView.ItemContainerGenerator.ContainerFromIndex(flipView.SelectedIndex);,然后遍历节点树以查找richtextblock然后设置blocks属性,但它适用于第一个item然后停止工作,我猜这与翻转视图如何虚拟化集合有关。

说实话,它确实是一个简单的任务真的让人困惑!?当然xaml团队意识到人们可能想要将图像绑定到富文本块?

我以为你能够将富文本块的内容绑定到我的模型上的属性,然后返回块,但富文本块似乎没有任何方法可以做到这一点,至少从我能看到的。

如果有人能帮助我,我将不胜感激。这让我发疯了。

1 个答案:

答案 0 :(得分:1)

我基本上遇到了同样的问题。我的解决方案是将HTML分解为一个pragraph列表并使用提到的this.flipView.ItemContainerGenerator.ContainerFromIndex(flipView.SelectedIndex)来查找RichTextBlock,清除其Inlines并将所有paragprah添加到Inlines集合中。使用FlipView的SelectedItemChanged事件调用进程