C# WPF将集合集合绑定到DataGrid

C# WPF将集合集合绑定到DataGrid,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,为了简化我的问题,假设我有一个属性,我将DataGrid绑定到: public List<LibrarySection> Library { get; set; } 现在,我如何绑定到属性库,以便在DataGrid中实现所有书籍的列表: 希望Library部分是数据网格的数据上下文,您只需添加书籍,因为它是项目资源 如果AutoGenerateColumns设置为true,这已经显示了您的项目,但如果您想定义自己的列(更改标题和内容),则应设置AutoGenerateColumns

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

public List<LibrarySection> Library { get; set; }
现在,我如何绑定到属性库,以便在DataGrid中实现所有书籍的列表:

希望Library部分是数据网格的
数据上下文
,您只需添加
书籍
,因为它是
项目资源

如果
AutoGenerateColumns
设置为
true
,这已经显示了您的项目,但如果您想定义自己的列(更改标题和内容),则应设置
AutoGenerateColumns=“false”

然后,您可以添加
,并告诉每个
绑定您的
项目资源
绑定到的集合中包含的对象的特定
属性

<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,但它没有
LiblarySection
而是一个名为Library的列表,正如我在问题中所说的。我也同意,我应该使用
observateCollection
,但这不取决于我。您也可以使用
{Binding library[0].Books}
-在单个库上绑定,或者为每个库创建一个新的
数据网格。从WPF和/或开始可能非常有用。还有很多示例使用了
DataGrid
<代码>分组
对于您的场景来说可能也很有趣!嘿,我有点误解你了。我没有时间仔细检查你的答案。我的网格的数据上下文是库列表,而不是库节本身。如何将数据绑定到
图书馆
,以获取图书列表?我需要所有的图书馆部分都在同一个数据网格中
class Book
{
   public string Name { get; set; }
   public string Author { get; set; }
   public string BookID { get; set; }
}
<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>