gpt4 book ai didi

c# - 分页后 TableCell 拆分 : remainder split part loses original cell properties

转载 作者:可可西里 更新时间:2023-11-01 08:49:25 27 4
gpt4 key购买 nike

我有一个关于 WPF FlowDocument Table 上的 TableCell 拆分策略的问题。

这是一个简单的代码,可以重现问题:

MainWindow.xaml.cs

/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

var table = new Table() { BorderThickness = new Thickness(1), BorderBrush = Brushes.Black, CellSpacing = 0 };
var rowGroup = new TableRowGroup();
var tableRow = new TableRow();
var cell1 = new TableCell() { Background = Brushes.Red, BorderThickness = new Thickness(0, 0, 1, 0), BorderBrush = Brushes.Black };
var cell2 = new TableCell() { Background = Brushes.Red };

cell1.Blocks.Add(new Paragraph(new Run("Cell 1 ******************************************************************************")));
cell2.Blocks.Add(new Paragraph(new Run("Cell 2")));
tableRow.Cells.Add(cell1);
tableRow.Cells.Add(cell2);
rowGroup.Rows.Add(tableRow);
table.RowGroups.Add(rowGroup);

var flowDocument = new FlowDocument();
flowDocument.Blocks.Add(table);

Content = flowDocument;
}
}

结果如下:

TableCell Split

如您在第二页中所见,右侧单元格的背景颜色丢失了。

有人遇到过这个问题吗?欢迎任何解决方案/解决方法!

编辑 1: 所有属性都丢失,因此在行/列上设置背景颜色无法解决我的问题(我主要有关于 TableCell 边框厚度的问题)

这是显示边框问题的屏幕:

enter image description here

编辑 2: 查看可视化树非常有启发性。分页过程似乎只为第二页的 Row 生成一个 ParagraphVisual,从而解释了所有视觉效果的丢失。没有视觉效果,因此没有背景/边框/等...一个解决方案可能是调整 DocumentPaginator关联到 FlowDocument

enter image description here

最佳答案

我已经更改了您的代码以进一步证明 Eyal H 所说的内容:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();

var table = new Table() { BorderThickness = new Thickness(1), BorderBrush = Brushes.Black, CellSpacing = 4 };
var rowGroup = new TableRowGroup();
var tableRow = new TableRow();
var cell1 = new TableCell() { RowSpan = 1, Background = Brushes.Red, BorderThickness = new Thickness(3, 3, 3, 3), BorderBrush = Brushes.Green };
var cell2 = new TableCell() { RowSpan = 1, Background = Brushes.Red, BorderThickness = new Thickness(2, 2, 2, 2), BorderBrush = Brushes.Blue };

var correctContent = "**************************************************************************************************************************************************************************************************************************************";

cell1.Blocks.Add(new Paragraph(new Run("Cell 1" + correctContent)));
cell2.Blocks.Add(new Paragraph(new Run("Cell 2" + correctContent.Replace("*"," ")+".")));
tableRow.Cells.Add(cell1);
tableRow.Cells.Add(cell2);
rowGroup.Rows.Add(tableRow);
table.RowGroups.Add(rowGroup);

var flowDocument = new FlowDocument();
flowDocument.Blocks.Add(table);

Content = flowDocument;
}
}

单元格 2 有许多以点结尾的空格。单元格 1 适合第 1 页,没有边框(也没有颜色)的空单元格位于第二页。我无法在层次结构中找到任何 TableDocumentPaginator 对象的属性来处理单元格内的分页符。

Cell 1 made shorter

“由于 Cell2 比页面短,因此它不会拆分,因此“空”单元格位于第二页(没有属性)”

也许是时候写一篇 Connect 文章了?

关于c# - 分页后 TableCell 拆分 : remainder split part loses original cell properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155099/

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