在WPF中打印Datagrid记录

Law*_*nce 3 wpf datagrid

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

PrintDialog printDlg = new PrintDialog();
printDlg.PrintVisual(grid1, "Grid Printing.");
Run Code Online (Sandbox Code Playgroud)

Nee*_*bey 8

嘿,对于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>
Run Code Online (Sandbox Code Playgroud)

而.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);
        }
    }
Run Code Online (Sandbox Code Playgroud)

希望它能帮到你

这是经过测试的代码.


Muh*_*hdi 0

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