Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the correct way to add a PageContent/ FixedPage to a FixedDocument in WPF?

In WPF, in order to add a FixedPage to a FixedDocument in code one needs to:

var page = new FixedPage();
var pageContent = new PageContent();

((IAddChild)pageContent).AddChild(page);

This appears to be the only way, however:

  • The MSDN documentation explicitly says one shouldn't do this ('This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.'- PageContent.IAddChild.AddChild Method).

  • It's ugly to have to cast to an explicit interface implementation in order to add the content to PageContent.

  • It's not simple to perform the basic operation of PageContent.

The documentation doesn't actually explain how to do this and I couldn't find any other information on how to do it. Is there another way? A 'correct' way?

like image 660
nicodemus13 Avatar asked Mar 07 '13 09:03

nicodemus13


1 Answers

According to MSDN documentation, you simply add a FixedPage object to the PageContent.Child property and then add that to the FixedDocument by calling the FixedDocument.Pages.Add method.

For instance:

public FixedDocument RenderDocument() 
{
    FixedDocument fd = new FixedDocument();
    PageContent pc = new PageContent();
    FixedPage fp = new FixedPage();
    TextBlock tb = new TextBlock();

    //add some text to a TextBox object
    tb.Text = "This is some test text";
    //add the text box to the FixedPage
    fp.Children.Add(tb);
    //add the FixedPage to the PageContent 
    pc.Child = fp;
    //add the PageContent to the FixedDocument
    fd.Pages.Add(pc);

    return fd;
}
like image 182
dtesenair Avatar answered Oct 20 '22 00:10

dtesenair