Let us say you have your application running in a folder called C:\MyApp. Then if you want to load a FlowDocumentContent.xaml from a folder called C:\Contentthen this is easily done by first defining a FlowDocumentReader in your app like so:
[XAML]
<FlowDocumentReader Name='myFlowDocument' ViewingMode='Scroll' IsTwoPageViewEnabled='False' IsPageViewEnabled='False'>
</FlowDocumentReader>
And load the xaml file as follows:
[C#]
FileStream xamlFile = new FileStream(filePath, FileMode.Open, FileAccess.Read);
// This will work, only if the top-level element in the document is FlowDocument
FlowDocument content = XamlReader.Load(xamlFile) as FlowDocument;
this.myFlowDocument.Document = content;
xamlFile.Close();
But if you have references to sub-folders in your document. For example, if you are referring to images under this folder C:\Content\Images, then those images wouldn’t be found by the parser because the parser is executing with the application directory context whereas the document contents are in a different directory. To make this work, you can force a context on the parser as follows:
[C#]
ParserContext context = new ParserContext();
context.BaseUri = new Uri(filePath, UriKind.Absolute);
FlowDocument content = XamlReader.Load(xamlFile, context) as FlowDocument;
Permalink