以编程方式将数据网格绑定到列表数组
本文关键字:绑定 列表 数组 网格 数据网 编程 方式 数据 | 更新日期: 2023-09-27 18:04:06
我必须列出数据:
List<string[]> dataRow = new List<string[]>();
- 每个string[]数组每行都有30个数据。
- 列名已经存在。
我试着像这样显示它:
XAML:<DataGrid Margin="8,259,8,8" IsReadOnly="True" AutoGenerateColumns="False" AlternatingRowBackground="Gainsboro" AlternationCount="2" Name="MyDataGrid" />
c#: MyDataGrid.ItemsSource = dataRow;
foreach( string[] cellContent in dataRow )
{
foreach( string text in cellContent )
{
var column = new DataGridTextColumn
{
Binding = new Binding(text)
};
MyDataGrid.Columns.Add(column);
}
}
但我得到了一个"ContextSwitchDeadlock"错误。我该如何解决这个问题?
谢谢你的帮助
EDIT: solved but not with the databinding Way
我是这样解决的:
List<string> ColumnName = new List<string>();
List<string[]> dataRow = new List<string[]>();
DataTable myTable = new DataTable();
// Fill Array ColumnName and dataRow Here
foreach (string text in ColumnName)
{
myTable.Columns.Add(text);
}
foreach (string[] cellContent in dataRow)
{
myTable.Rows.Add(cellContent);
}
DatensatzGrid.ItemsSource = myTable.AsDataView();
感谢所有的回复!!
DataGrid
控件不支持绑定2D数组,List<List..>>
等
参见这个问题:如何基于二维数组填充WPF网格
我创建了一个子类DataGrid
(DataGrid2D)来实现这一点。
要使用它,只需添加对DataGrid2DLibrary.dll的引用,添加这个命名空间
xmlns:dg2d="clr-namespace:DataGrid2DLibrary;assembly=DataGrid2DLibrary"
然后创建一个DataGrid2D并将其绑定到列表,2D数组或1D数组,像这样
<dg2d:DataGrid2D Name="MyDataGrid"
ItemsSource2D="{Binding DataRow}"/>
由于dataRow是一个字段而不是一个属性绑定将不起作用,但只需在代码中设置ItemsSource2D
就足以显示它
MyDataGrid.ItemsSource2D = dataRow;
-
DataGrid2D
Library -
DataGrid2D
来源