2010-06-22 11 views
7

¿Cuál sería el mejor enfoque para mostrar notas al pie para el contenido de FlowDocument en un FlowDocumentPageViewer?Implementación de notas al pie en WPF FlowDocument

Mi primer pensamiento fue tener el contenido de la nota al pie inmediatamente después del ancla de la nota al pie dentro del FlowDocument, con el contenido de la nota al pie formateado como una Figura con VerticalAnchor establecido en PageBottom.

Esto funciona muy bien, pero cuando hay varias notas al pie en una página, las notas al pie están apiladas en orden inverso, es decir, la primera nota está en la parte inferior, con las notas posteriores apiladas en la parte superior.

Otra dificultad con este enfoque es que las largas notas al pie de página no podrán abarcar páginas, ya que Figure no permite eso.

Un enfoque más extremo sería hacer lo mismo a la inversa: formatee el texto normal como figuras apiladas con VerticalAnchor configurado en PageTop, y deje que las notas al pie fluyan en la parte inferior. Sin embargo, los párrafos (que tienden a ser más largos que las notas al pie) ahora no abarcarán las páginas.

¿Qué otros enfoques puedo probar?

Idealmente me gustaría mostrar las notas a pie de página como aparecerían en la impresión (es decir, en la parte inferior de la página son relevantes), pero estoy abierto a otros enfoques.

Esto es para una aplicación de lectura para contenido académico especializado, donde las notas largas y frecuentes son la norma y deben ser parte de la experiencia de lectura. Por este motivo, no quiero utilizar notas al final y prefiero las notas al pie que se muestran en la parte inferior de cada página.

Respuesta

3

Pasé un tiempo mirando esto y tengo que aceptar que no parece haber una manera "agradable y fácil" de hacerlo.

Intenté derivar mis propias clases de envoltorio de las clases Flotante y Figura pero se pone muy complicado muy rápidamente ya que la paginación es horrible (al menos para mí) para funcionar. El problema con estos es que la figura permite anclarse a un elemento primario en XAML, mientras que el elemento flotante tiene toda la funcionalidad agradable que necesita, como la paginación, pero no se puede anclar en ningún lugar ... poco de un Catch 22 realmente , incluso en .NET 4.0.

Encontré dos enlaces here y here que podrían ayudar. El primero puede parecer un poco irrelevante a primera vista, pero eche un vistazo al código y debería tener la idea). Jugué con el código y la idea general funciona. Define una clase contenedora alrededor del DocumentPaginator y, por lo tanto, le permite controlar la paginación real.

Espero que eso ayude un poco de todos modos.

Cuestiones relacionadas