Headers and Footers
RadRichTextBox
supports Headers and Footers in its document when in Paged layout mode.
Note that Headers and Footers are not persisted when exporting with HtmlFormatProvider. You can read more about this here.
The topic contains the following sections:
Header Footer Types
The Headers
and Footers
are properties of a Section and each section in the document can have the following types of Headers and Footers:
First
—Used only on the first page of the section.Even
—Used on all even numbered pages in the section.Default
—Used on all pages of the section, where First or Even are not applicable or not specified.
Customizing Headers and Footers
The following example demonstrates how you can create a Header.
Create Header
Header header = new Header() { Body = radDocument, IsLinkedToPrevious = false }; //radDocument represents the content of a Header,
//typically contains a few paragraphs
When it comes to using a Header created in this manner, this depends on the state of the document - if it has been measured or not.
-
In a non-measured document, which you are building in code-behind, you can set the Default page Header of a section as illustrated below:
Set Header of a Section
section.Headers.Default = header;
-
In a measured document (a document that has been previewed in the editor), you can change the Default page header of the first section like shown in the next example:
Update a Header in Measured Document
this.radRichTextBox.UpdateHeader(this.radRichTextBox.Document.Sections.First, HeaderFooterType.Default, header);
All header/footer types - Default, First and Even are set identically. The only thing you should add when you set the First or Even Header/Footer of the document, is to set the property of the section that notifies the document to use different Header/Footer than the default one using one of the properties illustrated below:
Set Different Even/Odd Header
this.radRichTextBox.Document.Sections.First.HasDifferentFirstPageHeaderFooter = true;
//or
this.radRichTextBox.Document.HasDifferentEvenAndOddHeadersFooters = true;
Setting the Footers can be done in the same way. Here is the respective code for footers:
-
Creating a Footer:
Create Footer
Footer footer = new Footer() { Body = radDocument, IsLinkedToPrevious = false }; //radDocument is an instance of RadDocument, representing the content of the footer.
-
Setting the Footer to be used in a particular section:
-
In a non-measured document:
Set Footer of a Section
section.Footers.Default = footer;
-
In a measured document:
Update a Footer in Measured Document
this.radRichTextBox.UpdateFooter(this.radRichTextBox.Document.Sections.First, HeaderFooterType.Default, footer);
-
As for setting different footers for the first page or the even page, this is done by passing the respective parameter to the UpdateFooter() method - HeaderFooterType.First or HeaderFooterType.Even and setting the corresponding property of the document/editor.
Set Different Even/Odd Footer
this.radRichTextBox.Document.Sections.First.HasDifferentFirstPageHeaderFooter = true;
//or
this.radRichTextBox.Document.HasDifferentEvenAndOddHeadersFooters = true;
Disabling Headers and Footers
Headers and footers are only present in Paged layout mode, so the easiest way to remove them is to change the layout mode. In case you wish to show documents in paged mode and still disable headers and footers, you can do so by removing the UI layer responsible for their visualization - HeaderFooterLayer
.
The concept of UI layers and their usage are explained in this article.
Disable Headers and Footers
class CustomUILayerBuilder : UILayersBuilder
{
protected override void BuildUILayersOverride(IUILayerContainer uiLayerContainer)
{
base.BuildUILayersOverride(uiLayerContainer);
uiLayerContainer.UILayers.Remove(DefaultUILayers.HeaderFooterLayer);
}
}
Accessing the Headers and Footers
The Headers and Footers can be retrieved, for example, via interating the Sections
collection of the Document
property of the RadRichTextBox control. Each Section instance exposes this information via its API.
Retrieving the Headers
foreach (Telerik.Windows.Documents.Model.Section section in this.radRichTextBox.Document.Sections)
{
if (!section.Headers.Default.IsEmpty)
{
RadDocument radDocument = new RadDocument();
Section section1 = new Section();
Paragraph paragraph = new Paragraph();
Span span = new Span("Default");
paragraph.Inlines.Add(span);
section.Blocks.Add(paragraph);
RadDocument document = new RadDocument();
document.Sections.Add(section1);
section.Headers.Default.Body = document;
}
if (!section.Headers.First.IsEmpty)
{
RadDocument radDocument = new RadDocument();
Section section1 = new Section();
Paragraph paragraph = new Paragraph();
Span span = new Span("First");
paragraph.Inlines.Add(span);
section.Blocks.Add(paragraph);
RadDocument document = new RadDocument();
document.Sections.Add(section1);
section.Headers.Default.Body = document;
}
if (!section.Headers.Even.IsEmpty)
{
RadDocument radDocument = new RadDocument();
Section section1 = new Section();
Paragraph paragraph = new Paragraph();
Span span = new Span("Even");
paragraph.Inlines.Add(span);
section.Blocks.Add(paragraph);
RadDocument document = new RadDocument();
document.Sections.Add(section1);
section.Headers.Default.Body = document;
}
}
Additionally, the RadRichTextBox control exposes the ActiveDocumentEditor
property. It provides information about the currently active editor that you can utilize to access the Headers and Footers.
More information about the ActiveDocumentEditor property can be found here.