Вопрос:
Мне нужно только печатать записи данных. Я использовал один код, похожий на этот, но это тоже напечатал полосу прокрутки. Мне нужны только записи.
PrintDialog printDlg = new PrintDialog(); printDlg.PrintVisual(grid1, «Grid Printing.»); Ответ №1
Привет для печати DataGrid в WPF вам нужно взять <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); } }
Надеюсь, это поможет вам
Это проверенный код.
Ответ №2
Поместите свой DataGrid в ViewBox, чтобы вы могли получить то, что хотите.:)