簡體   English   中英

將WPF數據網格綁定到List <List <object >>

[英]Binding WPF datagrid to a List<List<object>>

我有一個列表的對象List<List<object>> ,我想以編程方式將其綁定到WPF數據網格。

到目前為止,我嘗試過:

dtgCores.ItemsSource = resinSystemData.data;

XAML

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

但我只獲得2列容量和計數。 有人可以建議嗎?

我有一個列表,我想以列表的格式使用列標題。

如果oyu需要更多信息,請告訴我。

數據網格不是為此而設計的。 它需要列的屬性(因此容量和計數)。

你需要選擇:

  • 使用另一個數據結構,如List<SomeClass>
  • 使用另一個控件。 具有2個datatemplates的嵌套列表框可能會起作用。

默認情況下, DataGrid會將列綁定到它作為ItemSource接收的直接列表中的對象的屬性。 這就是為什么當使用List<List<object>>作為'ItemSource'時,每一行將顯示ListCapacityCount的兩個屬性。

但是,您可以為每個列創建自己的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以防止創建CapacityCount列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM