在WPF中显示嵌套数据

在WPF中显示嵌套数据

问题描述:

如何在DataGrid中显示Person对象的集合,以便还可以查看有关Person,Address,Dependents和Awards的信息。在WPF中显示嵌套数据

public class Person 
{ 
     public int PersonId { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public int Age { get; set; } 
     public Address Address { get; set; } 
     public IList<Dependent> Dependents { get; set; } 
     public IList<Award> Awards { get; set; } 
} 

public class Address 
{ 
     public string City { get; set; } 
     public string State { get; set; } 
     public string Country { get; set; } 
} 

public class Dependent 
{ 
     public string DependentName { get; set; } 
     public int DependentAge { get; set; } 
} 

public class Award 
{ 
     public string AwardName { get; set; } 
     public DateTime AwardDate { get; set; } 
} 
+0

那你试试? – makc

+0

我试过/尝试HierarchicalDataTemplate,没有成功。 – Brij

一种选择是使用DataGridTemplateColumn

<DataGrid ItemsSource="{Binding MyItems}"> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <!-- template for Address, Dependent or Awards types --> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

第二个选择是使用row details

第三个选择是使用一些控制用于显示所选行的细节:

<DataGrid x:Name="myGrid" ItemsSource="{Binding MyItems}"> 
    <!-- The rest of grid here --> 
</DataGrid> 

<ContentControl Content="{Binding SelectedItem, ElementName=myGrid}"> 
    <ContentControl.ContentTemplate> 
     <DataTemplate> 
      <!-- The template for person's details --> 
     </DataTemplate> 
    </ContentControl.ContentTemplate> 
</ContentControl>