Igo*_*man 5 c# xaml microsoft-metro windows-8
我正在使用标准的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);
}
Run Code Online (Sandbox Code Playgroud)
调用SetRichContent,设置RichTextBlocks块,但在视觉上它们不会改变,并且在几次翻转后,整个应用程序崩溃而没有任何其他信息.
所以我的问题是,如何通过每次翻转(选择项目更改)在RichTextBlock上调用我自己的代码?
小智 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>
Run Code Online (Sandbox Code Playgroud)