I am looking for an idea of a clean generic way to describe repeating page headers and footers in a XAML FlowDocument without any code behind. It only needs to show up correctly when rendered to XPS from C#.
How to create a Xaml FlowDocument with Page Headers and Footers when rendered to XPS?
11.5k Views Asked by jbtule At
1
There are 1 best solutions below
Related Questions in C#
- Passing arguments to main in C using Eclipse
- kernel module does not print packet info
- error C2016 (C requires that a struct or union has at least one member) and structs typedefs
- Drawing with ncurses, sockets and fork
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- Configured TTL for A record(s) backing CNAME records
- Allocating memory for pointers inside structures in functions
- Finding articulation point of undirected graph by DFS
- C first fgets() is being skipped while the second runs
- C std library don't appear to be linked in object file
- gcc static library compilation
- How to do a case-insensitive string comparison?
- C programming: Create and write 2D array of files as function
- How to read a file then store to array and then print?
- Function timeouts in C and thread
Related Questions in WPF
- WPF MessageBox Cancel checkbox check
- WPF multiple control property simultaneous changes
- ObservableCollection.CollectionChanged does not select the correct DataTemplate on ToolBar
- Telerik's WPF RadColorPicker NoColorText property not working
- How to automate UI interaction during acceptance test run
- Binding to "this.property" object in VisualStateMenager
- ContextMenu Closes Immediately
- Update ObservableCollection where the items are received from another List
- change content button with trigger
- WPF - How to highlight a combobox border when focused
- Wpf No Highlight on ListBoxItem for Touch Devices
- WPF WebBrowser how best to get Tag trees
- Make a class suitable for Property Change Notification
- WPF Comparing two datatables to find matching values
- how to create folder and file with datetime in wpf application
Related Questions in XAML
- WPF multiple control property simultaneous changes
- Telerik's WPF RadColorPicker NoColorText property not working
- Ellipsis inside button content Windows Phone
- Binding to "this.property" object in VisualStateMenager
- Scroll view mistakes
- ContextMenu Closes Immediately
- Update ObservableCollection where the items are received from another List
- Looping "complex" object with ItemsControl
- Animation Trigger (Storyboard + Trigger) in C#
- Exporting Datatable
- xaml c# chart with custom axis label
- Xamarin Forms - Show Cancel button in toolbar items instead of Back (iOS)
- Can custom text be added to a listview cell?
- Bind control property from the inner control
- WPF Interactions CallMethodAction for DataTemplate in ListCheckBox thrown a exception "Could not find method on object of type"
Related Questions in .NET-4.0
- JSON result from PipeDrive API does not deserialize
- HTTP Post Request to web service . ERROR : Index was outside the bounds of the array
- I get nested tables, but I need separated tables (Netoffice,Word)
- Inspect element from my WPF WebBrowser, using "inspect element(s)"(IE,Chrome,Firefox) to get the css path("copy css-path")
- When to use ReaderWriterLockSlim and When to use ConcurrentBag?
- Serialize/Deserialize class containing byte array property into XML
- If and only if in vb.net 4?
- CallerMemberName doesn't return propertyName
- Inserting Data to a particular section in crystal report VS2010
- Waiting on tasks where number of tasks could vary
- Why can't local Windows 7 Pro machine read its own WMI values?
- Call a javascript function from within a DetailsView
- What happens if computer hangs while persisting a memory-mapped file?
- Exporting C# Produced Workbook Built with .Net 4.5 to Systems Running .Net 3.x
- Send an email where sender address is pulled from database
Related Questions in FLOWDOCUMENT
- Regex Split at beginning of line containing word
- Equivalent of html "<strong>" tag in WPF?
- Flow Document Paper Size
- Whats wrong with my Attached Property for RichTextBox "AttachFlowDocument"
- How can I change FontWeight of paragraph when FontFamily of a FlowDocument is set?
- WPF - FlowDocument - Stretch Table to Entire Width?
- flowdocument - inserting rich text at end creating extra paragraph breaks above insertion point
- adding RTF-tagged text to flowdocment in codebehind
- How can I keep XamlReader.Load(xamlFile) from inserting extra Run elements?
- Simplest way to modify a document "template" and print via WPF?
- WPF FlowDocument with ItemsPresenter
- How to create a Xaml FlowDocument with Page Headers and Footers when rendered to XPS?
- FlowDocumentReader scroll to top
- Print flowdocument scroll viewer on multiple pages
- Set page format in WPF FlowDocument for dot matrix printer
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
I had the same problem a few months ago, and found these links very helpful: WPF Multipage Reports Part IV Pagination http://www.codeproject.com/KB/WPF/PimpedDocumentPaginator.aspx
The basic technique I used was to create a custom paginator by deriving from
DynamicDocumentPaginatoras follows:In my case,
THeaderFooterModelandTFooterModelare subclasses of aPageNumberModeltype as I needed the header or footer to be able to show the current page number.The custom paginator delegates to the original XPS paginator to do the majority of its work, so it stores it away in the constructor.
The
THeaderModelandTFooterModeltypes allow the paginator to retrieve XAMLDataTemplatesfor each type, which is what allows you to specify the layout of the header and footer in XAML without resorting to custom drawing code.In my code, the header and footer are of a fixed size, so when the paginator is created it retrieves the header and footer templates to determine how much space to reserve.
In the example code in the links provided, the technique they use to reserve space for the header and footer is to use a scale transform to shrink the original content. Instead, I tell the original paginator to use a reduced page size and then add the page the original paginator generates to a
ContainerVisualand set itsOffset. You probably couldn't do this if the size of the headers and footers was dynamic because the page count would keep changing.The only other complication I can recall was that you need to use the
Dispatcherqueue when adding headers and footers (seeAddHeaderOrFooterToContainerAsyncbelow). Data binding doesn't work otherwise. We are slightly subverting the WPF rendering model to get this to work.This would all be quite hard to explain without including the code so I've attached the custom renderer code below. I've stripped out some irrelevant stuff so if it doesn't compile as is that's probably why :-)
Note that the page number offset is passed in because our XPS document is comprised of multiple FlowDocument sections and the calling code keeps track of the current overall page number.
Hope this helps!