以编程方式将数据网格绑定到列表数组

本文关键字:绑定 列表 数组 网格 数据网 编程 方式 数据 | 更新日期: 2023-09-27 18:04:06

我必须列出数据:

List<string[]> dataRow = new List<string[]>();
  1. 每个string[]数组每行都有30个数据。
  2. 列名已经存在。

我试着像这样显示它:

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来源