MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Есть ли возможность разрыва таблицы DataGrid WPF для разделения её на несколько таблиц"
Answer 961554
Полоса прокрутки появляется, потому что высоты элемента не хватает для отображения всех строк. Избавиться от нее легко, установив очень большую высоту для DataGrid, но что толку? FlowDocument не поддерживает постраничный вывод отдельного InlineUIContainer (как и BlockUIContainer). Может и можно изобрести какой-то костыльный класс, который будет резать DataGrid на отдельные Bitmap по размеру страницы и отдавать их отдельными UIElement, но нужно ли оно? Качество изображения будет явно не на высоте.
Лучше использовать класс Table, который поддерживает постраничный вывод внутри FlowDocument. Как-то так:
using System.Data; using System.Windows.Documents; public static Table CreateTable(DataTable dt) { Table t = new Table(); TableCell cell; TableRow trow; var rows = new TableRowGroup(); t.RowGroups.Add(rows); //параметры таблицы t.BorderBrush = Brushes.Black; t.BorderThickness = new Thickness(1); t.CellSpacing = 0; //заголовки столбцов trow = new TableRow(); foreach (DataColumn col in dt.Columns) { t.Columns.Add(new TableColumn()); cell = new TableCell(new Paragraph(new Run(col.Caption))); cell.BorderBrush = Brushes.Black; cell.BorderThickness = new Thickness(1); trow.Cells.Add(cell); } rows.Rows.Add(trow); //строки foreach (DataRow r in dt.Rows) { trow = new TableRow(); foreach (DataColumn col in dt.Columns) { cell = new TableCell(new Paragraph(new Run(r[col].ToString()))); cell.BorderBrush = Brushes.Black; cell.BorderThickness = new Thickness(1); trow.Cells.Add(cell); } rows.Rows.Add(trow); } return t; } private void Button_Click(object sender, RoutedEventArgs e) { //создадим DataTable с тестовыми данными DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("X")); dt.Columns.Add(new DataColumn("Y")); for (int i = 0; i < 100; i++) { var row = dt.NewRow(); row[0] = i; row[1] = Math.Round(Math.Sin(i*0.1),2); dt.Rows.Add(row); } //создадим таблицу на основе DataTable Table t = CreateTable(dt); //создадим документ FlowDocument fd= new FlowDocument(t); fdpvDocumentViewer.Document = fd; }
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.