无法获取FlowDocument / RichTextBox文本

时间:2012-09-27 09:18:50

标签: c# wpf xaml richtextbox flowdocument

我有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>

看起来像&#34;文件&#34;视图与视觉视图完全不同,虽然我不知道为什么这些视图是空的。有没有人知道如何正确获取所选文本(即使没有任何格式)?任何帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

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

How can I copy WPF FlowDocument InlineUIContainer contents?

Determining the selected InlineUIContainer in a WPF RichTextBox

处理所有可能的FlowDocument内容需要相当多的编码,但我现在很满意