2013-05-14 57 views
3

我只需要打印datagrid記錄。我用這樣一個代碼,但是這個也打印了datagrid滾動條。我只需要記錄。在WPF中打印Datagrid記錄

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

回答

8

嘿對於WPF打印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); 
     } 
    } 

希望它可以幫助你

這是測試代碼。

+0

即使我用它是打印滾動條:( – Gopi 2016-06-08 06:38:57

0

將您的DataGrid放置在ViewBox中,以便您可以獲得想要的效果。 :)