3

オブジェクトのリストのリストがあり、List<List<object>>プログラムでWPFデータグリッドにバインドしたいと思っています。

これまでに試しました:

コード

dtgCores.ItemsSource = resinSystemData.data;

xaml

<DataGrid Name="dtgCores" Grid.Column="1">

しかし、私は2列の容量とカウントを取得します。誰かアドバイスしてもらえますか?

リストの形式で使用したい列ヘッダーのリストもあります。

oyuにもう情報が必要な場合はお知らせください。

4

2 に答える 2

3

データグリッドはこのために設計されていません。列のプロパティが必要です(したがって、CapacityとCount)。

次を選択する必要があります。

  • 次のような別のデータ構造を使用するList<SomeClass>
  • 別のコントロールを使用します。2つのデータテンプレートを持つネストされたリストボックスはおそらく機能します。
于 2012-11-12T12:03:19.000 に答える
3

デフォルトでは、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

于 2016-09-25T14:30:24.273 に答える