It's a well-known bug that Visual Studio shows an error when you try to construct a FixedDocument
in XAML. For example, the following snippet
<DocumentViewer>
<FixedDocument>
<PageContent>
<FixedPage Width="21.0cm" Height="29.7cm">
<TextBlock>Hello World!</TextBlock>
</FixedPage>
</PageContent>
</FixedDocument>
</DocumentViewer>
compiles and runs perfectly fine, but Visual Studio shows an error in the error list (Property 'Pages' does not support values of type 'PageContent'.
) This is quite annoying.
I'm looking for a solution that allows me to construct my documents in a XAML file in Visual Studio without getting that error message. I've found a workaround, which I'd like to share below as an answer, but I'm curious if there's a better (more elegant) solution around.
As a workaround, I put the DocumentViewer as well as the page into a grid:
Then I attach the page to the DocumentViewer in the
Loaded
event of the window:VB example:
C# example:
A cleaner workaround:
This subclass of
FixedDocument
fakes aPages
property and redirect all added pages to the realPages
property in its base class.Usage:
Change
Hillinworks.WPF.Document
to the namespace where theXamlFixedDocument
class is located.This also enables design-time preview of your document.
I know this had already been answered, but I think this answer is nicer because it doesn't require you to add a DocumentView.
If there's a way to reference the resources by the key name and put them in the FixedDocument with XAML, please let me know. I can't seem to find a way to do that, but maybe it's possible.
Use:
Extension Method:
XAML: