将列插入表中

时间:2010-07-14 16:49:40

标签: wpf flowdocument

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

  

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

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

1 个答案:

答案 0 :(得分:0)

您的猜测是正确的,除了需要考虑其他一些复杂情况。

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

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

实际上,如果要支持全范围的列插入方案,代码将变得非常复杂。您可能希望在私有框架方法TextRangeEditTables.InsertColumn()上建模您的解决方案。