2017-02-13 35 views
0

Может ли кто-нибудь помочь мне понять RTF? У меня есть inputStream заполнены с некоторой строкиСоздать RTF-прогон в flowdocument

inputStream = new MemoryStream(Encoding.ASCII.GetBytes((myObject.someStr))); 

Затем этот поток передается FlowDocument

FlowDocument fldoc = new FlowDocument(); 
TextRange tr = new TextRange(
    fldoc.ContentStart, fldoc.ContentEnd); 
tr.Load(inputStream, DataFormats.Rtf); 

После этого я создаю пользовательский текстовое поле для обработки myObject «s свойство

Block curBlock = fldoc.Blocks.FirstBlock; 
Inline curInline = (currentBlock as Paragraph).Inlines.FirstInline; 
Run curRun = (currentInline as Span).Inlines.FirstInline as Run; 
return new CustomTextBox(tr, currentRun.ContentStart, myObject) 

При потере фокуса мой пользовательский текстовый блок

TextPointer ptr = CurrentRun.ContentStart; 
ptr.DeleteTextInRun(ptr.GetTextRunLength(LogicalDirection.Forward)); 
ptr.InsertTextInRun(mainTextbox.Text); 
using (MemoryStream ms = new MemoryStream()) 
{ 
    tr.Save(ms, DataFormats.Rtf); 
    myObject.someStr = ASCIIEncoding.Default.GetString(ms.ToArray()); 
} 

Теперь проблема: если myObject.someStr == "", то curBlock == null, и я не могу создать экземпляр CustomTextBox. Я стараюсь, чтобы

Paragraph p = new Paragraph(); 
Span s = new Span(); 
Run r = new Run(tr.Text); 
s.Inlines.Add(r); 
p.Inlines.Add(s); 
fldoc.Blocks.Add(new Paragraph()); 
return new CustomTextBox(tr, r.ContentStart, myObject) 

, но tr пусто в любом случае. Как я могу справиться с этим?

ответ

0
fldoc = new FlowDocument(p); 

помогает

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

  • Нет связанных вопросов^_^