デフォルトでは、aDataGrid
は、として受け取るイミディエイトリスト内のオブジェクトのプロパティに列をバインドしますItemSource
。これが、List<List<object>>
「ItemSource」としてを使用する場合、各行に、、およびの2つのプロパティが表示されるList
理由Capacity
ですCount
。
DataGridColumn
ただし、列ごとに独自の列を作成して、リストのインデックスにバインドすることはできます。次に例を示します。
public void SetTestDataInGrid(List<List<object>> testData)
{
testGrid.Columns.Clear();
int colCount = testData.Max(x => x.Count);
for (int i = 0; i < colCount; i++)
{
var currentColumn = new DataGridTextColumn();
currentColumn.Binding = new Binding(string.Format("[{0}]", i));
testGrid.Columns.Add(currentColumn);
}
testGrid.ItemsSource = testData;
}
このメソッドは、内部リストの最大長をチェックして列の数を決定し、次にDataGridTextColumn
各列にを作成し、それぞれを内部リストの正しいインデックス(、など)にバインドしてから、[0]
を[1]
に設定しItemSource
ますtestData
。
および列が作成されないようAutoGenerateColumns="False"
に、に追加することもできます。DataGrid
Capacity
Count