Silverlight 在datagrid中动态创建列

Silverlight 在datagrid中动态创建列,silverlight,Silverlight,我正在尝试创建一个列数和行数可变的数据网格。我可以创建列,但我不知道如何插入内容 _dataGrid.Columns.Add(new DataGridTextColumn { Header = "Column 0", Binding = new Binding("0")

我正在尝试创建一个列数和行数可变的数据网格。我可以创建列,但我不知道如何插入内容

_dataGrid.Columns.Add(new DataGridTextColumn { Header = "Column 0",
                                                            Binding = new Binding("0")

                                                            }
                                  );
我有我想要添加到字符串[,]中的所有数据。我不知道如何准备一个实现IEnumerable的数据结构,以便设置

_dataGrid.ItemsSource = GenerateData();//I'd expect to return a Dictionary["0"]=List<string>(){"1","2","3"} to bind to but it doesn't work
\u dataGrid.ItemsSource=GenerateData()//我希望返回一个要绑定的字典[“0”]=List(){“1”、“2”、“3”},但它不起作用
如果我想包含一个包含“1”、“2”、“3”的列,我需要从GenerateData返回什么样的数据结构


提前感谢。

我昨晚遇到了这个问题,我想手动将内容添加到不同的行和单元格等

您可以通过以下方式通过编程实现:

Grid.SetRow(myUserControl, 1);
Grid.SetColumn(myUserControl, 1);

myGrid.Children.Add(myUserControl);

它确实完全绕过了数据绑定模型,但有时这正是您所需要的。

归根结底,ItemsSource必须是一个实现IEnumerable的对象。构成集合的对象必须具有与在列上设置的绑定匹配的属性。DataTable可能是最自然的入门之地。

ItemSource可以是任何东西。。。我在下面演示了一个匿名类型数组,但如果需要双向数据绑定,则必须使用命名类型(匿名类型生成单向绑定)

grid.Columns.Add(new DataGridTextColumn { 
    Header = "Foo",
    Binding = new Binding("Foo")
});

grid.Columns.Add(new DataGridTextColumn { 
    Header = "Bar",
    Binding = new Binding("Bar")
});

grid.ItemsSource = new [] {
   new { Foo = "asdf", Bar = "asdf" },
   new { Foo = "asdf", Bar = "asdf" },
   new { Foo = "asdf", Bar = "asdf" }
}