flowdocument - 在末尾插入富文本,在插入点上方创建额外的段落分隔符

时间:2011-02-01 15:10:30

标签: wpf vb.net flowdocument richtext

我正在创建一个由多个记录组成的flowdocument。每条记录在顶部包含两个表,然后是一些我从数据库中提取的富文本。附加富文本的代码位于下面(cp.Comments包含rtf标记文本)。

Dim tr As TextRange
Dim arr() As Byte

Using ms As New System.IO.MemoryStream
  arr = (New System.Text.UTF8Encoding).GetBytes(cp.Comments)
  ms.Write(arr, 0, arr.Length)
  ms.Seek(0, IO.SeekOrigin.Begin)

  tr = New TextRange(fd.ContentEnd, fd.ContentEnd)   'add to end
  tr.Load(ms, DataFormats.Rtf)
End Using

flowdocument正确呈现第一个记录,但所有后续记录都在第一个和第二个表之间中断。最奇怪的是我在导入RTF之前渲染了2个表,但RTF无论如何都会以某种方式影响表之间的间距。

fd = new FlowDocument

for each cp in SomeCollection

   fdtemp = New FlowDocument

   CreateFirstTable(cp, fdtemp)
   CreateSecondTable(cp, fdtemp)
   AddRTF(cp, fdtemp)

   FlowDocumentUtils.AddDocument(fdtemp, fd)

next

问题不在于集合的第一个元素中的数据 - 如果我告诉渲染跳过第一个记录的渲染,那么第二个记录渲染正常,但其余的包含额外的间距。

注意:问题肯定与富文本插入有关 - 如果我注释掉AddRTF调用,那么所有表都被正确地渲染在一起。 (表边距都设置为(0,0,0,0))

有没有人见过这个?

1 个答案:

答案 0 :(得分:1)

您是否检查过其他问题的解决方案:

此外,您似乎有两种不同的方法:

CreateFirstTable(cp, fdtemp)
CreateSecondTable(cp, fdtemp)

我怀疑这两种方法的运作方式之间的区别在于问题所在,但是我知道他们真正在做什么,我只能推测。