2010-06-22 2 views
7

Что бы быть лучшим подходом для отображения сносок для содержания FlowDocument в FlowDocumentPageViewer?Реализация сносок в WPF FlowDocument

Моя первая мысль заключалась в том, что содержимое сноски следует сразу после аннотации сноски в FlowDocument, при этом содержание сноски отформатировано как фигура с вертикальной установкой, установленной на PageBottom.

Это прекрасно работает, но когда на странице есть несколько сносок, сноски складываются в обратном порядке, то есть первая сноска на дне, а последующие сноски складываются поверх нее.

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

Более экстремальный подход состоит в том, чтобы сделать то же самое в обратном направлении - форматировать обычный текст в виде штабелированных фигур с вертикальным набором, установленным на PageTop, и позволить сноскам перемещаться снизу. Однако абзацы (которые, как правило, длиннее сносок) теперь не будут охватывать страницы.

Какие еще подходы можно попробовать?

В идеале я хотел бы показывать сноски, поскольку они появлялись в печати (т. Е. В нижней части страницы, к которой они относятся), но я открыт для других подходов.

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

ответ

3

Я провел некоторое время, глядя на это и должны согласиться, что там, кажется, не быть «приятно и легко» способ сделать это.

Я попытался получить свои собственные классы-обертки из классов Floater и Figure, но он очень запутан очень быстро, поскольку разбиение на страницы является ужасным (по крайней мере для меня), чтобы работать. Проблема заключается в том, что рисунок позволяет привязываться к родительскому элементу в XAML, тогда как у Floater есть все приятные функции, которые вам нужны - например, разбиение на страницы, но они не могут быть привязаны нигде ... бит Catch 22 действительно , даже в .NET 4.0.

Я нашел две ссылки here и here, которые могли бы помочь. Первый может показаться немного неуместным с первого взгляда, но посмотрите на код, и вы должны получить идею). Я играл с кодом, и общая идея работает. Он определяет класс оболочки вокруг DocumentPaginator и, следовательно, позволяет вам контролировать фактическую разбивку на страницы.

Надеется, что помогает немного иначе.

 Смежные вопросы

  • Нет связанных вопросов^_^