我正在使用标准的Visual Studio模板,并且我有一个ItemsDetailPage,其中包含一个在其DataTemplate中带有RichTextBlock的FlipView。
我想将RichTextBlock块设置为我在文本中生成的自定义段落。我认为没有办法在XAML中绑定RichTextBlocks Block,所以我使用的是代码。在RichTextBlock的Loaded事件中,我设置了它的Block,它运行正常。但问题是,当页面显示时,Loaded事件只被调用一次。当我“翻转”到另一个项目时,FlipView的所选项目会发生变化,但不会再次调用Loaded事件(我认为这没问题)。
我尝试在FlipViews SelectionChanged项目中设置RichTextBlock,但这不起作用。
var ind = this.flipView.SelectedIndex;
var flipViewItem = this.flipView.ItemContainerGenerator.ContainerFromIndex(flipView.SelectedIndex);
if (flipViewItem != null)
{
var scroller = FindFirstElementInVisualTree<ScrollViewer>(flipViewItem);
var tb = scroller.FindDescendantByName("richTextColumns").FindDescendantByName("richTextBlock") as RichTextBlock;
SetRichContent(tb, (flipView.SelectedItem as ArticleViewModel).HtmlContent);
}
调用SetRichContent,设置RichTextBlocks块,但在视觉上它们不会改变,在几次翻转后,整个应用程序崩溃而没有任何其他信息。
所以我的问题是,如何在每次翻转时使用RichTextBlock调用我自己的代码(seleced item change)?
答案 0 :(得分:1)
您可以绑定富文本框。确保正确设置数据上下文。我们需要查看更多代码才能做出正确的答案。
<RichTextColumns>
<RichTextColumns.ColumnTemplate>
<DataTemplate>
<RichTextBlockOverflow Width="400" Margin="50,0,0,0"/>
</DataTemplate>
</RichTextColumns.ColumnTemplate>
<RichTextBlock Width="400">
<Paragraph>
<Run Text="{Binding Content}"/>
</Paragraph>
</RichTextBlock>
</RichTextColumns>