我必须列出数据:
List<string[]> dataRow = new List<string[]>();
我试图像这样显示它:
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”错误。我该如何解决这个问题?
感谢你帮助
编辑:已解决但未使用数据绑定方式
我解决了这个问题: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();
感谢所有回复!!
答案 0 :(得分:4)
DataGrid
控件不支持绑定到2D数组,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并将其绑定到IList,2D数组或1D数组,如下所示
<dg2d:DataGrid2D Name="MyDataGrid"
ItemsSource2D="{Binding DataRow}"/>
由于dataRow是一个字段,因此不是属性绑定不起作用,只是在代码中设置ItemsSource2D
就足以显示它了
MyDataGrid.ItemsSource2D = dataRow;