Wpf 向表中插入列

Wpf 向表中插入列,wpf,flowdocument,Wpf,Flowdocument,我有一个有三列的表。现在我想插入另一列,但我想在第一列之后插入新列。现在我想知道如何才能做到这一点。如果我没记错的话,Table.Columns属性并不是真正代表列,它更多的是代表它们的布局,而与列的值无关? 看 此属性返回的TableColumn对象可以与列中的TableCell对象一起用于定义列的布局,但它们不确定渲染的实际列数。表中的TableCell对象决定实际渲染的列数。例如,如果定义了3列,但只有2列的表格单元格,则只会呈现2列 所以,我想,如果我想添加一个新的带值的列,我必须循环遍

我有一个有三列的表。现在我想插入另一列,但我想在第一列之后插入新列。现在我想知道如何才能做到这一点。如果我没记错的话,Table.Columns属性并不是真正代表列,它更多的是代表它们的布局,而与列的值无关? 看

此属性返回的TableColumn对象可以与列中的TableCell对象一起用于定义列的布局,但它们不确定渲染的实际列数。表中的TableCell对象决定实际渲染的列数。例如,如果定义了3列,但只有2列的表格单元格,则只会呈现2列


所以,我想,如果我想添加一个新的带值的列,我必须循环遍历表的行,并且在每一行中,我必须在正确的位置添加一个新的单元格。

您的猜测是正确的,除了还有一些额外的并发症要考虑。

如果插入位置左侧的任何单元格的
行span
列span
大于1,则需要对插入新单元格的单元格索引进行相应调整。例如,要在第三个可视列位置插入新列,理论上可以在索引为2的现有单元格之前插入新单元格。但是,如果任何一行在索引0处有一个单元格,其
RowSpan=2
,则此单元格将跨越两列,因此此行中的新单元格必须插入到索引为1的单元格之前

如果跨列单元格穿过要插入的列位置,则无需插入新单元格-只需增加现有单元格的
ColumnSpan
。类似地,如果前一行的跨行单元格位于插入位置左侧的一列中,则需要对此进行调整

事实上,如果您想支持完整的列插入场景,代码将变得相当复杂。您可能希望在私有框架方法
TextRangeEditTables.InsertColumn()
上对解决方案建模