DataGrid和数组之间的双向绑定

我有一个名为的数组:

string[,] TableData; 

我可以使用绑定将其内容与DataGrid控件链接吗?

如果可能,我希望用户能够编辑网格并反映数组中的更改。

请参阅此问题: 如何基于二维数组填充WPF网格

您可以使用名为DataGrid2D 此控件 ( 此处为源代码 )。 要使用它,只需添加对DataGrid2DLibrary.dll的引用,添加此命名空间

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

然后创建一个DataGrid2D并将其绑定到您的IList,2D数组或1D数组

  

用户将能够编辑数据,并且DataGrid所做的更改将反映在2Darrays中

您不能将矩阵绑定到DataGrid 。 但是,根据您要实现的目标,您可以将其转换为class的数组。

矩阵的内容是什么? 你为什么不尝试这样的东西?

 public class MyClass { public string A { get; set; } public string B { get; set; } public MyClass(string a, string b) { Debug.Assert(a != null); Debug.Assert(b != null); this.A = a; this.B = b; } } 

然后实例化如下内容:

 MyClass[] source = { new MyClass("A", "B"), new MyClass("C", "D") }; this.dataGrid.ItemsSource = source; 

或者,如果您无法修改源的类型,请尝试使用LINQ进行投影:

 var source = (from i in Enumerable.Range(0, matrix.GetLength(0)) select new MyClass(matrix[i, 0], matrix[i, 1])).ToList(); this.dataGrid1.ItemsSource = source; 

最简单的方法应该是在WPF Datagrid中使用构建并将Array投影到将被绑定的View类。

您希望您的用户能够添加行吗? 如果是,则无法绑定到数组,因为您无法添加行。

如果您有任意数量的列,则应该能够将数组投影到动态对象,并将datagrid的AutoGenerateColumns属性设置为true。 你的专栏有名字吗?