WPF打印XAML控件

时间:2014-04-22 07:43:18

标签: c# wpf printing

我尝试将打印功能添加到WPF项目中。用户可以在运行时向文本框或其他控件添加和删除文本,因此xaml控件的大小不固定。如果他点击打印按钮我想弄清楚控件的大小并打印一个(如果需要的多页)文档。到目前为止这是我的代码

public void Print(FrameworkElement element)
    {

        System.Windows.Controls.PrintDialog printDlg = new System.Windows.Controls.PrintDialog();
        if (printDlg.ShowDialog() == true) {

            double height = element.ActualHeight;
            double width = element.ActualWidth;
            Size pageSize = new Size(printDlg.PrintableAreaWidth, printDlg.PrintableAreaHeight);
            //element.Measure(pageSize);
            //element.Arrange(new Rect(5, 5, pageSize.Width, pageSize.Height));

            printDlg.PrintVisual(element, "this is a test");
        }

    }

我的想法是检查控件的实际高度和宽度。如果其中一个大于pagesize,我知道我必须打印多个页面。我不太确定该怎么做,但我想我将不得不使用XPSDocument类。有人可以帮助我,我不知道如何将我的文档拆分成多个页面并打印出来,有人也可以告诉我如何从我的xaml代码创建FlowDocument。

提前感谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,您无法在多个页面上打印控件,但您可以手动执行此操作。 这是伟大的文章,它解决了你的问题: http://www.codeproject.com/Articles/164033/WPF-Visual-Print-Component