標準の Visual Studio テンプレートを使用しており、DataTemplate に RichTextBlock を持つ FlipView を含む ItemsDetailPage があります。
テキストで生成されたカスタム パラグラフに RichTextBlock ブロックを設定したいと考えています。XAML で RichTextBlocks ブロックをバインドする方法はないと思うので、分離コードを使用しています。RichTextBlock の Loaded イベントで、そのブロックを設定しました。これで問題なく動作します。しかし問題は、ページが表示されたときに Loaded イベントが 1 回しか呼び出されないことです。別のアイテムに「フリップ」すると、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 で呼び出される独自のコードを取得するにはどうすればよいですか?