WPF将集合的集合绑定到DataGrid

时间:2018-08-01 09:18:11

标签: c# .net wpf xaml

为简化我的问题,假设我有一个属性,即将DataGrid绑定到:

public List<LibrarySection> Library { get; set; }

然后在我的每个LibrarySection中

class LibrarySection
{
   public string SectionName{ get; set; }
   public List<Book> Books { get; set; }
}

这本书看起来像这样:

class Book
{
   public string Name { get; set; }
   public string Author { get; set; }
   public string BookID { get; set; }
}

现在我该如何绑定到属性库,以在DataGrid中实现所有书籍的列表: Book table

1 个答案:

答案 0 :(得分:1)

期望LibrarySection是您的DataGrid的DataContext,您可以简单地将Books添加为ItemsSource

如果AutoGenerateColumns设置为true,您已经显示了您的项目,但是如果您要定义自己的列(更改标题和内容),则应设置{{ 1}}。

然后,您可以添加AutoGenerateColumns="false"并告诉每个Columns绑定Column所绑定的集合中包含的对象的特定Property

ItemsSource

通常,您应该拥有一个<DataGrid ItemSource="{Binding Books} AutoGenerateColumns="false"><!--should be false--> <!-- Define custom columns --> <DataGrid.Columns> <DataGridTextColumn Binding="{Name}" Header="BookName" /> <DataGridTextColumn Binding="{Author}" Header="Book Author" /> <DataGridTextColumn Binding="{BookID}" Header="BookID" /> </DataGrid.Columns> </DataGrid> 属性的ViewModel。 如果是这样,只需使用LibrarySection

我还建议使用ItemsSource="{Binding Library.Books}"ObservableCollection<LibrarySection>而不是ObservableCollection<Book>,因为如果任何值更改,它都会自动更新。