flowdocument - вставка расширенного текста в конце, создание дополнительных разрывов абзаца над точкой вставки - PullRequest
8 голосов
/ 01 февраля 2011

Я создаю потоковый документ, который состоит из нескольких записей. Каждая запись содержит две таблицы вверху, а затем какой-то форматированный текст, который я извлекаю из базы данных. Код, который добавляет форматированный текст, находится ниже (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 правильно отображает первую из записей, но все последующие записи отображаются с разрывом между первой и второй таблицей. Самое странное, что я рендерил 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))

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

1 Ответ

1 голос
/ 08 ноября 2012

Вы проверили решения из этого другого вопроса:

Также, похоже, у вас есть два отдельных метода:

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

Я подозреваю, что разница между тем, как работают эти два метода, заключается в том, где проблема, но зная, что они на самом деле делают, я могу только строить догадки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...