Многорядная сетка данных для обработки коллекции в коллекции? - PullRequest
2 голосов
/ 03 января 2012

У меня есть следующие структуры данных

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 Ответ

6 голосов
/ 03 января 2012

RowDetailTemplate делает то, что вы хотите? Вы можете использовать его для отображения детей так, как вы хотите. просто Google для этого, чтобы увидеть еще несколько примеров

<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>
...