gpt4 book ai didi

c# - WPF 流文档布局

转载 作者:行者123 更新时间:2023-11-30 22:26:57 25 4
gpt4 key购买 nike

我正在尝试打印 WPF FlowDocument。布局需要采用每页 4 个文档的形式,布局如下:

 Doc1 | Doc2
-------------
Doc3 | Doc4

(抱歉,我想不出更好的布局说明方式)。

页面需要填充,所以如果 Doc1 & 2 是空白或只有一两个字符,它仍然需要将它们打印为与 Doc3 & 4 相同的大小。

我正在使用的代码如下(抱歉,它很长,我已尝试在可行的地方进行删减):

PrintDialog printDialog = new PrintDialog();
if ((bool)printDialog.ShowDialog().GetValueOrDefault())
{
FlowDocument flowDocument = new FlowDocument();
flowDocument.PageHeight = printDialog.PrintableAreaHeight;
flowDocument.PageWidth = printDialog.PrintableAreaWidth;
flowDocument.PagePadding = new Thickness(25);

flowDocument.ColumnGap = 0;

flowDocument.ColumnWidth = (flowDocument.PageWidth -
flowDocument.ColumnGap -
flowDocument.PagePadding.Left -
flowDocument.PagePadding.Right);


Table myTable = new Table();
myTable.BorderThickness = new Thickness(3);

AddCols(myTable); // Add 2 cols

TableRowGroup rg = new TableRowGroup();
TableRow row = new TableRow();

AddRows(myTable); // Adds 2 rows

TableCell cell = new TableCell(new Paragraph(new Run("Doc1")));
cell.BorderThickness = new Thickness(1);
cell.BorderBrush = Brushes.Black;
// Repeat 4 times

row.Cells.Add(cell);

myTable.RowGroups.Add(rg);

doc.Blocks.Add(myTable);

....

我遇到的问题是,虽然它确实打印出来了,但它并没有像上面描述的那样尝试使其适合页面。我正在尝试的事情是否可行?如果可行,如何实现?

编辑:

从看here我相信我真正需要的是一种计算段落高度的方法,以便我可以设置 Padding 属性。不幸的是,此链接中提出的解决方案不起作用!

最佳答案

尝试将整个 block 放在一个网格中,以便为其提供统一的布局,然后将网格放在 block 中,然后将 block 放在单个表格单元格中。看看这是否适合你 -

Grid grid = new Grid();
grid.RowDefinitions.Add(new RowDefinition());
grid.RowDefinitions.Add(new RowDefinition());
grid.ColumnDefinitions.Add(new ColumnDefinition());
grid.ColumnDefinitions.Add(new ColumnDefinition());

Label text1 = new Label();
text1.Content = "Doc1";
grid.Children.Add(text1);
Grid.SetColumn(text1, 0);
Grid.SetRow(text1, 0);

Label text2 = new Label();
text1.Content = "Doc2";
grid.Children.Add(text2);
Grid.SetColumn(text2, 1);
Grid.SetRow(text2, 0);

Label text3 = new Label();
text1.Content = "Doc3";
grid.Children.Add(text3);
Grid.SetColumn(text3, 0);
Grid.SetRow(text3, 1);

Label text4 = new Label();
text1.Content = "Doc4";
grid.Children.Add(text4);
Grid.SetColumn(text4, 1);
Grid.SetRow(text4, 1);

BlockUIContainer block = new BlockUIContainer(grid);

Table table = new Table();
TableRowGroup rg = new TableRowGroup();
TableCell cell = new TableCell();
cell.Blocks.Add(block);
TableRow row = new TableRow();
row.Cells.Add(cell);
rg.Rows.Add(row);
table.RowGroups.Add(rg);
doc.Blocks.Add(table);

关于c# - WPF 流文档布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11510914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com