【问题标题】:How to retrieve text from RichTextBlock in WinRT如何在 WinRT 中从 RichTextBlock 中检索文本
【发布时间】:2012-08-18 14:10:17
【问题描述】:

我正在使用由 VS2012 的默认 Metro Style 项目模板添加的标准 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 始终为空。 但是,如果我做一个 value.Blocks.Clear()
它清除了正在绑定的文本。我错过了什么?

简单地说,如何在 WinRT(不是 WPF 或 Silverlight)中从 RichTextBlock 中检索未格式化的文本。

感谢和问候, 苏米特。

【问题讨论】:

    标签: microsoft-metro windows-runtime winrt-xaml


    【解决方案1】:

    与其尝试检索它,不如简单地在绑定上使用转换器?

    【讨论】:

    • 感谢您的指导。听起来是正确的方法。很快就会得到结果。
    • 好的,只是一个转换器无法剪切它,因为我需要动态添加各种​​类型的“视图”元素。所以我最终根据blogs.u2u.be/diederik/post/2012/05/22/… 的示例创建了一个自定义 DataTemplateSelector。我能够生成整个模板并将其绑定到所需的数据。我不得不做出一些牺牲,比如添加一个名为 Contents 的新视图模型集合属性,以便与 ListItem 绑定。这很骇人听闻,但现在可以使用。赞成票仍然存在,因为它“推动”了我以不同的方式思考。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    相关资源
    最近更新 更多