Не удается получить текст FlowDocument / RichTextBox

У меня есть 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>

Looks like the "document" view is completely different from visual view although i have no idea why these Runs are empty. Does anybody know how to get the selected text (even without any formatting) properly? Any help appreciated


person grzegorz_p    schedule 27.09.2012    source источник


Ответы (1)


Нашел подходящее решение:

Как я могу скопировать содержимое WPF FlowDocument InlineUIContainer?

Определение выбранного InlineUIContainer в WPF RichTextBox

Для обработки любого возможного содержимого FlowDocument потребовалось бы довольно много кода, но пока я им доволен.

person grzegorz_p    schedule 27.09.2012