【问题标题】:Print Datagrid records in WPF在 WPF 中打印 Datagrid 记录
【发布时间】:2013-05-14 07:11:06
【问题描述】:

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

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

【问题讨论】:

    标签: wpf datagrid


    【解决方案1】:

    嘿,对于 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);
            }
        }
    

    希望对您有所帮助

    这是经过测试的代码。

    【讨论】:

    • 即使我使用 它正在打印滚动条 :(
    • 如果数据网格包含 100 行,它怎么能转到下一页,因为目前它打印滚动条
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-29
        • 2016-10-08
        • 2016-03-06
        • 1970-01-01
        • 1970-01-01
        • 2023-01-19
        相关资源
        最近更新 更多