我正在使用一些包含InlineUIContainer元素的RichTextBlock对象。我希望能够选择和复制所有的文本,包括在InlineUIContainer中包含的文本。
当前,当我选择块中的所有文本时,将跳过InlineUIContainer对象中包含的文本。
下面是我正在创建的一个示例:
<RichTextBlock IsTextSelectionEnabled="True">
<Paragraph FontSize="20">
<Bold>This text is selectable</Bold>
<InlineUIContainer FontFamily="Global User Interface">
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="11" VerticalAlignment="Top" Margin="0,0,-1,0">Super Script Text</TextBlock>
<HyperlinkButton ClickMode="Release" Style="{StaticResource NoMarginHyperlinkButtonStyle}">
Link
</HyperlinkButton>
</StackPanel>
</InlineUIContainer>
This text is also selectable
</Paragraph>
</RichTextBlock>如果我选择这段Xaml中的所有文本并将其复制/粘贴到NotePad中,我就得不到超级脚本文本或链接文本。
有没有办法把所有的文本都选中?
发布于 2013-08-21 23:45:41
这是因为HyperlinkButton不是document API的一部分,而实际上是包装在InlineUIContainer中的UIElement。有两种方法可以处理这个问题。
现在使用WPF,我们可以在这个范围内获得一个TextRange,但是winRT没有公开它,所以你需要在你的代码中做到这一点……获取RichTextBlock中的所有块,遍历每个块以检查它的ContentStart和ContentEnd是否在RTB.SelectionStart和RTB.SelectionEnd中,如果是,则将它们添加到列表中。
现在应该很容易从这个列表和任何托管HyperlinkButtons的InlineUIContainers中提取所有的运行和粗体/斜体。
2这真的不是一个好的方法,因为它将很难考虑到段落等的页边距等。
https://stackoverflow.com/questions/15856178
复制相似问题