VS2012 の既定の Metro スタイル プロジェクト テンプレートによって追加される標準の RichTextColumns.cs ヘルパー クラスを使用しています。内部で RichTextBlock を使用して、RichTextColumns を追加します。DataBinding は、次のマークアップで正常に動作しています
<common:RichTextColumns>
<common:RichTextColumns.ColumnTemplate>
<DataTemplate>
<RichTextBlockOverflow Width="400" Margin="50,0,0,0"/>
</DataTemplate>
</common:RichTextColumns.ColumnTemplate>
<RichTextBlock Width="400">
<Paragraph>
<Run Text="{Binding Content}"/>
</Paragraph>
</RichTextBlock>
これで、WinRT でハイパーリンクとして扱われない「コンテンツ」にハイパーリンクが埋め込まれました。ハイパーリンクのように振る舞う必要があります。そのため、RichTextBlock にバインドされているテキストを取得してトークン化し、HyperlinkButton を持つ InlineUI 要素を適切な場所に挿入したいと考えています。RichTextBlock にバインドされているテキストのみを取得できれば、これをすべて行うことができます。残念ながら、それを「取得」することはできないようです。
私は試した
RichTextBlock value = (RichTextBlock)GetValue(RichTextContentProperty);
valueRun = (Run)((Paragraph)value.Blocks[0]).Inlines[0];
value.Select(((Paragraph)value.Blocks[0]).ContentStart, ((Paragraph)value.Blocks[0]).ContentEnd);
Paragraph para = TokenizeTweet(value.SelectedText);
ただし、SelectedText は常に空です。ただし、 a を実行する
value.Blocks.Clear()
と、バインドされているテキストがクリアされます。私は何が欠けていますか?
簡単に言えば、WinRT (WPF または Silverlight ではない) で RichTextBlock から書式設定されていないテキストを取得する方法です。
よろしくお願いします。