多行数据网格来处理集合中的集合?

时间:2012-01-03 12:15:30

标签: c# wpf datagrid expression-blend

我有以下数据结构

class Car
{
    int CarID;
    string CarModel;
    string CarColor;
    string CarAge;
}

class Person
{
    int ID;
    string FirstName;
    string Surname;
    List<Car> Cars;
}

我将人们存储在一个可观察的集合中 -

ObservableCollection<Person> People;

我需要在像这个模型的DataGrid中显示它们 - enter image description here

如您所见,一个人可以拥有一辆或多辆汽车,当他们拥有多辆汽车时,我想在同一“行”中显示多辆汽车的详细信息。

WPF可以实现吗?如果是这样,我将如何设置绑定?

1 个答案:

答案 0 :(得分:6)

RowDetailTemplate做你想做的事吗?您可以使用它以您想要的方式显示childrows。只是谷歌为它看到更多的例子

<DataGrid ItemsSource="{Binding People}">
  <DataGrid.Columns>
     <DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
     <DataGridTextColumn Header="First Name" Binding="{Binding FirstName}"/>
     <DataGridTextColumn Header="Last Name" Binding="{Binding Surname}"/>
   </DataGrid.Columns>
   <DataGrid.RowDetailsTemplate>
      <DataTemplate>
          <DataGrid ItemsSource="{Binding Cars}">
           <DataGridTextColumn Binding="{Binding Path=CarModel}" Header="Model" />
           <DataGridTextColumn Binding="{Binding Path=CarAge}" Header="Age" />
          <DataGridTextColumn Binding="{Binding Path=CarColor}" Header="Color" />
         </DataGrid>
        </DataTemplate>
     </DataGrid.RowDetailsTemplate>
    </DataGrid>