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 отображает первую из записей правильно, но все последующие записи отображаются с разрывом между первой и второй таблицами . Что самое странное, я m отрисовывает 2 таблицы до импорта RTF, но 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))

Кто-нибудь когда-нибудь видел это?

8
задан walther 2 July 2012 в 00:46
поделиться