Как я могу использовать WPF FlowDocument или FixedDocument для создания печатной страницы из элементов управления на экране?

Я пытаюсь напечатать несколько элементов управления WPF (сетка данных, диаграммы и т. Д.), Которые отображаются на экране в моем приложении, но которые необходимо перегруппировать и дополнить другим текстом и т. Д.

Использование WPF FlowDocument или FixedDocument кажется очевидным способом составления и печати документов, но я изо всех сил пытаюсь добиться этого.

Я попытался создать VisualBrush из элемента (ов) и использовать его в качестве заливки прямоугольника без успеха (прямоугольник вообще не отображается).

Кто-нибудь использовал FlowDocument/FixedDocument, чтобы сделать это, и / или есть пример кода, показывающего, как это достигается?

1 ответ

Решение

Обнаружено, что все работает нормально, если FlowDocument отображается перед печатью (например, если он размещен в FlowDocumentReader).

XAML

    xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"

,

        <d3:ChartPlotter x:Name="plotter">
                <d3:Header TextBlock.FontSize="20">
                    Very simple chart
                </d3:Header>
            </d3:ChartPlotter>

,

            <FlowDocumentReader>
            <FlowDocument>
                <Paragraph>
                    <Run>Graph Header</Run>                        
                </Paragraph>
                <BlockUIContainer>
                    <Rectangle x:Name="GraphRectangle" Height="300"/>                            
                </BlockUIContainer>
            </FlowDocument>
        </FlowDocumentReader>

CS

    public MainWindow()
    {
        InitializeComponent();
        GraphRectangle.Fill = new VisualBrush(plotter);
    }
Другие вопросы по тегам