1

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 にバインドされているテキストを取得してトークン化し、HyperlinkBut​​ton を持つ 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 から書式設定されていないテキストを取得する方法です。

よろしくお願いします。

4

1 に答える 1

1

それを取得しようとする代わりに、バインディングで単純にコンバーターを使用してみませんか?

于 2012-08-18T16:00:12.473 に答える