gpt4 book ai didi

c# - 以编程方式将 DataGrid 绑定(bind)到列表数组

转载 作者:行者123 更新时间:2023-11-30 15:43:16 29 4
gpt4 key购买 nike

我必须列出数据:

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”错误。我该如何解决这个问题?

谢谢你的帮助

编辑:已解决但不是数据绑定(bind)方式

我是这样解决的:

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控件不支持绑定(bind)到二维数组,List<List..>>等等

看到这个问题:How to populate a WPF grid based on a 2-dimensional array

我创建了一个子类 DataGrid ( DataGrid2D ) 实现这一目标。

要使用它只需添加对 DataGrid2DLibrary.dll 的引用,添加此命名空间

xmlns:dg2d="clr-namespace:DataGrid2DLibrary;assembly=DataGrid2DLibrary"

然后像这样创建一个 DataGrid2D 并将其绑定(bind)到您的 IList、二维数组或一维数组

<dg2d:DataGrid2D Name="MyDataGrid"
ItemsSource2D="{Binding DataRow}"/>

因为 dataRow 是一个字段而不是属性绑定(bind)将不起作用,而只是设置 ItemsSource2D在后面的代码中足以显示它

MyDataGrid.ItemsSource2D = dataRow;

关于c# - 以编程方式将 DataGrid 绑定(bind)到列表数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6882646/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com