2013-07-08 34 views
0

如何在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

回答

1

一種選擇是使用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>