我有一个对象列表列表,List<List<object>>
我想以编程方式将它绑定到 WPF 数据网格。
到目前为止,我已经尝试过:
代码
dtgCores.ItemsSource = resinSystemData.data;
xml
<DataGrid Name="dtgCores" Grid.Column="1">
但我只得到 2 列容量和计数。有人可以建议吗?
我有一个列标题列表,我也想以列表的格式使用。
如果oyu需要更多信息,请告诉我。
我有一个对象列表列表,List<List<object>>
我想以编程方式将它绑定到 WPF 数据网格。
到目前为止,我已经尝试过:
代码
dtgCores.ItemsSource = resinSystemData.data;
xml
<DataGrid Name="dtgCores" Grid.Column="1">
但我只得到 2 列容量和计数。有人可以建议吗?
我有一个列标题列表,我也想以列表的格式使用。
如果oyu需要更多信息,请告诉我。
数据网格不是为此而设计的。它需要其列的属性(因此是容量和计数)。
您需要选择:
List<SomeClass>
默认情况下,aDataGrid
会将列绑定到它作为ItemSource
. 这就是为什么当使用 aList<List<object>>
作为 'ItemSource' 时,每一行都会显示 a 和 的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
列。