之间结合我有一个名为数组:双向DataGrid和数组
string[,] TableData;
我可以使用绑定一个DataGrid控件链接的内容?
如果可能,我希望用户能够编辑网格并反映数组中的更改。
之间结合我有一个名为数组:双向DataGrid和数组
string[,] TableData;
我可以使用绑定一个DataGrid控件链接的内容?
如果可能,我希望用户能够编辑网格并反映数组中的更改。
见这个问题:How to populate a WPF grid based on a 2-dimensional array
您可以使用this control调用DataGrid2D
(source code here)。要使用它只需添加到DataGrid2DLibrary.dll参考,添加此命名空间
xmlns:dg2d="clr-namespace:DataGrid2DLibrary;assembly=DataGrid2DLibrary"
,然后创建一个DataGrid2D并将其绑定到你的IList,二维数组或一维数组这样
<dg2d:DataGrid2D Name="dataGrid2D"
ItemsSource2D="{Binding Int2DList}"/>
的用户将能够编辑数据和在DataGrid
中所做的更改将反映在二维数组中
您不能将矩阵绑定到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;
这里的问题是我的矩阵可以有任何数量的列/行。 – 2011-03-19 14:26:33
这对我很好 - 我有一个固定的列数。我使用索引器,所以我可以作为数组访问它或作为数据绑定列表
这只适用于你有一个列和行的静态数 – rolls 2016-11-20 19:55:22
最简单的方法应该是使用WPF Datagrid中的构建并将您的数组投影到将被绑定的View类。
你想让你的用户能够添加行吗?如果yes绑定到一个数组是不可能的,因为你不能添加行。
如果您有任意数量的列,您应该能够将您的数组投影到动态对象,并将DataGrid的AutoGenerateColumns属性设置为true。你的专栏有名字吗?
我希望用户能够添加行和列。 Cols没有名字。 – 2011-03-19 15:27:47
@Thanks Meleak,我一直在阅读,但我有兴趣填充** DataGrid ** 2D数组,而不是网格的组件。 – 2011-03-19 14:52:23
@Jaime Oro:更新了我的答案。我在以前的项目中有相同的要求,并创建了一个子类“DataGrid”,您可以尝试 – 2011-03-19 15:07:31
完美地工作!感谢Genious! – 2011-03-19 15:42:25