5

我正在使用标准的 Visual Studio 模板,并且我有一个 ItemsDetailPage,其中包含一个 FlipView,其 DataTemplate 中有一个 RichTextBlock。

我想将 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 上调用我自己的代码?

4

1 回答 1

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>
于 2012-10-01T16:51:30.950 回答