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

あなたの推測は正しいですが、考慮すべき追加の問題がいくつかあります。

挿入位置の左側に1RowSpan以上ColumnSpanのセルがある場合は、新しいセルを挿入するセル インデックスに対応する調整を行う必要があります。たとえば、ビジュアル列の 3 番目の位置に新しい列を挿入するには、理論的にはインデックス 2 の既存のセルの前に新しいセルを挿入しますRowSpan=2。であるため、この行の新しいセルは、インデックス 1 のセルの前に挿入する必要があります。

列にまたがるセルが挿入先の列位置をまたぐ場合、新しいセルを挿入する必要はありませんColumnSpan。既存のセルの を増やすだけです。同様に、前の行に、挿入位置の左側の列の 1 つに収まる行にまたがるセルがある場合は、これを調整する必要があります。

実際、列挿入シナリオをすべてサポートしたい場合、コードは非常に複雑になります。プライベート フレームワーク メソッドでソリューションをモデル化したい場合がありますTextRangeEditTables.InsertColumn()

于 2010-08-06T13:18:52.250 に答える