为简化我的问题,假设我有一个属性,即将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; }
}
答案 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>
,因为如果任何值更改,它都会自动更新。