我正在尝试创建一个包含可变数量的列和行的数据网格。我可以创建列,但我不知道如何插入内容。
_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
如果我想包含一个包含“1”,“2”,“3”的列,我需要从GenerateData返回的数据结构是什么?
提前致谢。
答案 0 :(得分:1)
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" }
}
答案 1 :(得分:0)
昨晚我打了这个,我想手动将内容添加到不同的行和单元格等。
您可以通过以下方式进行编程:
Grid.SetRow(myUserControl, 1);
Grid.SetColumn(myUserControl, 1);
myGrid.Children.Add(myUserControl);
它完全绕过了数据绑定模型,但有时这正是你所需要的。
答案 2 :(得分:0)
在最后的分析中,ItemsSource只需要是一个实现IEnumerable的对象。构成集合的对象必须具有与您在列上设置的绑定相匹配的属性。 DataTable可能是最自然的入门之地。