簡體   English   中英

創建在flowdocument中運行的RTF

[英]Create RTF run in flowdocument

有人可以幫我理解RTF嗎? 我有一些字符串填充的inputStream

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還是空的。 我該如何處理?

fldoc = new FlowDocument(p);

幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM