0

Ia 有 RichTextBox,其内容定义如下:

                    <FlowDocument>
                    <Paragraph x:Name="para">
                        <Label Padding="0,0,0,0" Margin="0,0,0,0">
                            <Hyperlink Click="Hyperlink_Click">
                                <Run Text="{Binding Txt}" x:Name="rxm" />
                            </Hyperlink>
                        </Label>
                        <Label Padding="0,0,0,0" Margin="0,0,0,0" FontWeight="Bold" Content=" - " />
                        <Label Padding="0,0,0,0" Margin="0,0,0,0" FontWeight="Bold" x:Name="name" Content="Some name"
                   ToolTipService.ShowDuration="10000">
                            <Label.ToolTip>
                                <ContentControl Content="Tooltip" />
                            </Label.ToolTip>
                        </Label>
                    </Paragraph>
                </FlowDocument>

问题是我无法正确获取选定的文本。我得到的空白很少。因此,我尝试至少使用以下代码检索所有 FlowDocument 的文本:

            TextRange tr = new TextRange(
          doc.Selection.Start,
          doc.Selection.End);
        MemoryStream ms = new MemoryStream();
        tr.Save(ms, DataFormats.Xaml);
        string xamlString =
           ASCIIEncoding.Default.GetString(ms.ToArray());

事实证明,我只运行了几次,每个运行都有空白:

<Section xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...  <Paragraph>
    <Run> </Run>
    <Run> </Run>
    <Run> </Run>
    <Run> </Run>
    <Run> </Run>
</Paragraph>

看起来“文档”视图与视觉视图完全不同,尽管我不知道为什么这些运行是空的。有人知道如何正确获取所选文本(即使没有任何格式)?任何帮助表示赞赏

4

1 回答 1

0

我找到了一个合适的解决方案:

如何复制 WPF FlowDocument InlineUIContainer 内容?

确定 WPF RichTextBox 中选定的 InlineUIContainer

处理所有可能的 FlowDocument 内容需要大量编码,但我现在对此感到满意

于 2012-09-27T11:20:51.787 回答