5

我只需要打印数据网格记录。我使用了这样的一个代码,但这一个也打印了 datagrid 滚动条。我只需要记录。

PrintDialog printDlg = new PrintDialog();
printDlg.PrintVisual(grid1, "Grid Printing.");
4

3 回答 3

13

嘿,对于 WPF 中的 Print DataGrid,您必须<StackPanel>使用给定的代码。

Xaml 代码是

 <StackPanel>
        <DataGrid AutoGenerateColumns="False" Margin="12,0,0,0" Name="dataGrid1"  HorizontalAlignment="Left"  VerticalAlignment="Top"  ItemsSource="{Binding}" AlternatingRowBackground="LightGoldenrodYellow" AlternationCount="1">
            <DataGrid.Columns>
                <DataGridTemplateColumn Header="Image" Width="SizeToCells" IsReadOnly="True">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Image Source="{Binding Path=Image}" Width="100" Height="50" />
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>


                <DataGridTextColumn Header="Make" Binding="{Binding Path=Make}"/>
                <DataGridTextColumn Header="Model" Binding="{Binding Path=Model}"/>
                <DataGridTextColumn Header="Price" Binding="{Binding Path=Price}"/>
                <DataGridTextColumn Header="Color" Binding="{Binding Path=Color}"/>
            </DataGrid.Columns>
        </DataGrid>
        <Button Content="Print" Click="OnDataGridPrinting"  Width="80" Height="30" />
    </StackPanel>

.CS 代码是

   private void OnDataGridPrinting(object sender, RoutedEventArgs e)
    {
        System.Windows.Controls.PrintDialog Printdlg = new System.Windows.Controls.PrintDialog();
        if ((bool)Printdlg.ShowDialog().GetValueOrDefault())
        {
            Size pageSize = new Size(Printdlg.PrintableAreaWidth, Printdlg.PrintableAreaHeight);
            // sizing of the element.
            dataGrid1.Measure(pageSize);
            dataGrid1.Arrange(new Rect(5, 5, pageSize.Width, pageSize.Height));
            Printdlg.PrintVisual(dataGrid1, Title);
        }
    }

希望对你有帮助

这是经过测试的代码。

于 2013-05-14T07:36:30.373 回答
0

将您的 DataGrid 放在 ViewBox 中,这样您就可以得到想要的结果。:)

于 2016-06-08T11:00:26.677 回答
0

如果您想在 wpf 中打印数据网格中的所有记录。我已经在这里回答了更好的解释。看见。 在 WPF 中打印 DataGrid 中的所有数据

于 2018-05-08T17:21:11.707 回答