0

我有一个有 3 列的表。现在我想插入另一列,但我想在第一列之后插入新列。现在我想知道如何做到这一点。如果我没记错的话, Table.Columns 属性并不是真正代表列,它更多地代表它们的布局,但与列的值无关?看看例如http://msdn.microsoft.com/en-us/library/system.windows.documents.table.columns.aspx

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

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

4

1 回答 1

0

您的猜测是正确的,只是需要考虑一些额外的复杂情况。

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

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

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

于 2010-08-06T13:18:52.250 回答