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的财产

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); 

帮助