【发布时间】:2015-01-16 13:14:47
【问题描述】:
这听起来可能很奇怪,但首先要了解我为什么要这样做。
我从 xml 文件中读取了我想在网格上显示的列的名称,仅为这些列运行查询并构造一个对象。我不知道类的名称或它们的属性(我从 xml 文件中读取它们),所以我不能声明它们。因此,我可以选择为从 db 读取的每一列声明一个类,如下所示。
public class LabelValueTypeGroup
{
public string Label { get; set; }
public string Type { get; set; }
public string Value { get; set; }
}
这是一列。所以一行是
List<LabelValueTypeGroup> or ObservableCollection<LabelValueTypeGroup>
然后整张桌子就是
List<List<LabelValueTypeGroup>> or ObservableCollection<ObservableCollection<LabelValueTypeGroup>>
显然,当我尝试将它与网格绑定时,它首先向我显示了一个像这样的 InnerLists 长度表
4
4
4
4
4
4
4
4
在将它与它显示的列表的第一个索引绑定时
Label Value Type
ID 435 System.Decimal
Name John System.String
Phone 3453113 System.String
Email j@j.com System.String
有什么方法可以将它与网格绑定,将内部列表作为列,将外部列表作为行?我的意思是我意识到这不是一个简单的绑定,但由于我是 Silverlight 的新手,任何帮助对我来说都非常有价值。
【问题讨论】:
-
使用 System.Data.DataTable 或 System.Data.DataSet 让生活更轻松,并填充其内部表。有很多解释将 wpf / Silverlight(例如 DataGrid)绑定到 DataSet 的文档。
-
两者都在 Silverlight 中不可用。
-
我学到了一些东西。您可以将每一行视为一个视图模型,就像您已经写过的那样:ObservableCollection
,并将其设置为 DataGrid 的 ItemsSource。为此不需要嵌套列表声明。
标签: c# wpf silverlight data-binding datagrid