2010-06-22 2 views
7

Quelle serait la meilleure approche pour afficher des notes de bas de page pour du contenu FlowDocument dans un FlowDocumentPageViewer? Ma première pensée a été d'avoir le contenu de la note de bas de page immédiatement après l'ancre de la note de bas de page dans le FlowDocument, avec le contenu de la note formatée comme une figure avec VerticalAnchor définie sur PageBottom. Cela fonctionne très bien, mais quand il y a plusieurs notes de bas de page sur une page, les notes de bas de page sont empilées dans l'ordre inverse, c'est-à-dire que la première note est tout en bas, les notes de bas de page étant empilées dessus.Implémentation des notes de bas de page dans un FlowFocument WPF

Une autre difficulté de cette approche est que les longues notes de bas de page ne seront pas autorisées à s'étendre sur plusieurs pages, car la figure ne le permet pas.

Une approche plus extrême consisterait à faire de même en inversant le format du texte normal en tant que figures empilées avec VerticalAnchor défini sur PageTop, et laisser les notes de bas de page couler en bas. Cependant, les paragraphes (qui ont tendance à être plus longs que les notes de bas de page) ne s'étendront plus sur plusieurs pages.

Quelles autres approches puis-je essayer?

Idéalement, je voudrais afficher les notes de bas de page telles qu'elles apparaîtraient dans l'impression (c'est-à-dire en bas de la page à laquelle elles sont pertinentes), mais je suis ouvert à d'autres approches.

Ceci est pour une application de lecteur pour le contenu académique spécialisé, où les notes de bas de page longues et fréquentes sont la norme et devraient faire partie de l'expérience de lecture. Pour cette raison, je ne veux pas utiliser de notes de fin et préférer les notes de bas de page affichées au bas de chaque page.

Répondre

3

J'ai passé un moment à regarder cela et je suis d'accord pour dire qu'il ne semble pas y avoir une façon "agréable et facile" de le faire.

J'ai essayé de dériver mes propres classes de wrapper des classes Floater et Figure mais cela devient très compliqué très rapidement car la pagination est horrible (au moins pour moi). Le problème avec ceux-ci est que la Figure se permet d'être ancrée à un parent en XAML, alors que le Floater a toutes les fonctionnalités dont vous avez besoin - comme la pagination - mais il ne peut être ancré nulle part ... , même dans .NET 4.0. J'ai trouvé deux liens here et here qui pourraient aider. Le premier peut sembler un peu hors de propos à première vue, mais jetez un oeil au code et vous devriez avoir l'idée) J'ai joué avec le code et l'idée générale fonctionne. Il définit une classe wrapper autour de DocumentPaginator et vous permet donc de contrôler la pagination réelle.

J'espère que cela aide un peu quand même.