Может ли кто-нибудь помочь мне понять 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 пусто в любом случае. Как я могу справиться с этим?