デフォルトでは、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"に、に追加することもできます。DataGridCapacityCount