Как получить текст из RichTextBlock в WinRT

Я использую стандартный вспомогательный класс RichTextColumns.cs, который добавляется шаблоном проекта Metro Style VS2012 по умолчанию. Он использует 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>

Now I have the embedded hyperlinks in 'Content' that are not treated as hyperlinks in WinRT. I need them to behave like hyperlinks. So I want to retrieve the text that's getting bound to the RichTextBlock, tokenize it, insert InlineUI elements that have the HyperlinkButton at appropriate places. Now I could do all this if I could only retrieve the text that is getting bound to the RichTextBlock. Unfortunately I can't seem to 'retrieve' it.

Я пытался

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 всегда пуст. Однако, если я делаю value.Blocks.Clear()
, он очищает текст, который связывается. Что мне не хватает?

Проще говоря, как получить неформатированный текст из RichTextBlock в WinRT (не в WPF или Silverlight).

Спасибо и С уважением, Сумит.


person sumitkm    schedule 18.08.2012    source источник


Ответы (1)


Вместо того, чтобы пытаться получить его, почему бы просто не использовать конвертер в привязке?

person N_A    schedule 18.08.2012
comment
Спасибо за направление. Звучит как правильный подход. Скоро вернусь с результатами. - person sumitkm; 18.08.2012
comment
Хорошо, просто конвертер не смог его вырезать, потому что мне нужно было динамически добавлять различные типы элементов «Вид». Поэтому я создал собственный DataTemplateSelector на основе примера здесь blogs.u2u.be/diederik/post/2012/05/22/ . Я могу сгенерировать весь шаблон и привязать его к необходимым данным. Мне пришлось пойти на некоторые жертвы, такие как добавление нового свойства коллекции View Model с именем Contents, чтобы работала привязка с ListItem. Это хакерство, но пока работает. Голосование остается, потому что оно «подтолкнуло» меня к другому мышлению. - person sumitkm; 19.08.2012