WPF:将Datagrid/DataTable转换为用于打印的表

WPF:将Datagrid/DataTable转换为用于打印的表,wpf,printing,wpfdatagrid,Wpf,Printing,Wpfdatagrid,我正试图“打印”我的datagrid/datatable的内容。 我读了一些关于将DATAGRID转换为TABLE再转换为FLOWDOCUMENT的文章,但我找不到如何进行转换的源代码 我只需要一些关于如何将datagrid/dataTable转换为Table的示例代码 然后我将应用此解决方案: 有什么想法吗 感谢并为我的noob问题感到抱歉。就我的研究而言,当我打印一些东西时,我发现将UI元素转换为页面是一种错误的尝试。打印与创建UI有很大不同,并且纸上没有滚动条或可拖动的列:),因此打印数据

我正试图“打印”我的datagrid/datatable的内容。 我读了一些关于将DATAGRID转换为TABLE再转换为FLOWDOCUMENT的文章,但我找不到如何进行转换的源代码

我只需要一些关于如何将datagrid/dataTable转换为Table的示例代码

然后我将应用此解决方案:

有什么想法吗


感谢并为我的noob问题感到抱歉。

就我的研究而言,当我打印一些东西时,我发现将UI元素转换为页面是一种错误的尝试。打印与创建UI有很大不同,并且纸上没有滚动条或可拖动的列:),因此打印数据与表单上显示的表单数据不同

DataTable
而言,这只是数据的一种表示形式,因此您可以轻松生成一个可以打印的表。它已经有行和列,因此应该直接开始:(注意代码未测试)

如果你问我,我发现这个API有点冗长,但是对于理解正确的复杂文档来说,它非常强大

System.Data.DataTable dataTable = GetDataTable();
var table = new Table();
var rowGroup = new TableRowGroup();
table.RowGroups.Add(rowGroup);
var header = new TableRow();
rowGroup.Rows.Add(header);

foreach (DataColumn column in dataTable.Columns)
{
    var tableColumn = new TableColumn();
    //configure width and such
    table.Columns.Add(tableColumn);
    var cell = new TableCell(new Paragraph(new Run("column Header")));
    header.Cells.Add(cell);
}

foreach (DataRow row in dataTable.Rows)
{
    var tableRow = new TableRow();
    rowGroup.Rows.Add(tableRow);

    foreach (DataColumn column in dataTable.Columns)
    {
        var value = row[column].ToString();//mayby some formatting is in order
        var cell = new TableCell(new Paragraph(new Run(value)));
        tableRow.Cells.Add(cell);
    }
}

//and print your table