2017-02-07 3 views
-3

enter image description hereКак преобразовать FlowDocument в строку?

1) Как преобразовать FlowDocument в строку?

2) Как преобразовать мою строку в FlowDocument?

FlowDocument содержит текст и изображения.

Текст в строке должен быть сохранен. Text12345

Фотографии должны быть преобразованы. Так, например, кодируются: iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABHNCSV

Text12345 
iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABHNCSV 
Text67890 


<text> 
    Text12345 
    <encoded_image> 
     iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABHNCSV 
    </encoded_image> 
    Text67890 
</text> 

XAML:

<RichTextBox x:Name="textrich" > 
    <FlowDocument > 
     <Paragraph/> 
    </FlowDocument> 
</RichTextBox> 
+0

Почему вы не перечисляете _YourRichTextBox.Document.Blocks_? Если это TextRun, получите строку, если она что-то еще, преобразуйте ее в строку. – Ron

+0

Как? ........... – codename0082016

+0

Чтобы показать, как, я думаю, вы должны быть более конкретными. Что вы подразумеваете под «Картинки должны быть преобразованы»? вам тоже нужна помощь? – Ron

ответ

1

Обычный способ для получения текста RichTextBox является использование TextRange:

string rtb = new TextRange(rtb .Document.ContentStart, rtb .Document.ContentEnd).Text; 

В ваш случай, вы хотите иметь дело с различными блоками и строками, по-разному. Вы можете перечислить их. Что-то вроде этого:

var res = new StringBuilder(); 
foreach (Block r in rtb.Document.Blocks) 
    { 
     if (r is Paragraph) 
      foreach (Inline i in ((Paragraph)r).Inlines) 
       if (i is Run) 
       { 
        res.Append(r.ToString()); 
       } 
       else if (i is InlineUIContainer) 
       { 
        res.Append(ConvertToString((Image)((InlineUIContainer)i).Child)); // you should create ConvertToString() method 
       } 

    } 
Смежные вопросы