Share via


How to: Load a XAML File into a FlowDocumentReader

This example demonstrates how to parse a XAML file that contains a FlowDocument, and display the loaded file in a FlowDocumentReader.

Example

The following example defines an empty, named FlowDocumentReader that will be manipulated by the code example below.

<FlowDocumentReader
  Name="flowDocRdr" 
  IsFindEnabled="True"  
  IsPrintEnabled="True"
  MinZoom="50" MaxZoom="1000"
  Zoom="120" ZoomIncrement="5"
/>

At the most basic level, there are steps involved in loading a FlowDocument file into a FlowDocumentReader.

  1. Open the FlowDocument file as a stream.

  2. Parse the stream into a FlowDocument object. The Load method provided by the XamlReader class is intended to perform this operation.

  3. Set the resulting FlowDocument object as the value of the Document property on the FlowDocumentReader.

The following example performs these steps.

void LoadFlowDocumentReaderWithXAMLFile(string fileName)
{
    // Open the file that contains the FlowDocument...
    FileStream xamlFile = new FileStream(fileName, FileMode.Open, FileAccess.Read);
    // and parse the file with the XamlReader.Load method.
    FlowDocument content = XamlReader.Load(xamlFile) as FlowDocument;
    // Finally, set the Document property to the FlowDocument object that was 
    // parsed from the input file.
    flowDocRdr.Document = content;

    xamlFile.Close();
}

If the FlowDocument references external resources (such as image files) using relative uniform resource identifiers (URIs), it is necessary to specify a ParserContext that includes a BaseUri so that the parser can make sense of the relative URIs. The XamlReader class provides Load method that accepts a ParserContext.

For a functional sample that enables the user to load a XAML file into a FlowDocumentReader, see FlowDocumentReader Load/Save XAML Sample.

See Also

Tasks

How to: Save the Contents of a FlowDocumentReader as a XAML File