2012-07-09 56 views
1

我有一個客戶對象的列表,我想在DataGrid中顯示。如何顯示多個孩子的記錄WPF DataGrid?

dataGrid.DataContext = customers; 

每個客戶都有一個或多個電話號碼:我已經通過代碼背後綁定的列表。我想將它們列在客戶的行/記錄中。我如何去做這件事? 我的DataGrid中看起來像這樣的XAML:

<DataGrid AutoGenerateColumns="False" Height="212" IsReadOnly="True" 
    HorizontalAlignment="Left" Margin="12,41,0,0" ItemsSource="{Binding}" 
    Name="dataGrid" VerticalAlignment="Top" Width="932"> 
    <DataGrid.Columns> 
    <DataGridTextColumn Binding="{Binding Path=LastName}" Header="Porting ID"/> 
    <DataGridTextColumn Binding="{Binding Path=FirstName}" Header="Operator" /> 
    </DataGrid.Columns> 
</DataGrid> 

Customer類是:

public class Customer 
{ 
    public String LastName { get; set; } 
    public String FirstName { get; set; } 
    public List<Phonenumber> PhoneNumbers { get; set; } 
} 

的******中國類是:

public class PhoneNumber 
{ 
    public String AreaCode {get;set;} 
    public String Number {get;set;} 
} 

回答

3

首先請設置的ItemsSource客戶沒有在DataContext 。現在你的問題:你可以使用DataGridTemplateColumn並綁定到你的電話號碼集合。此模板列的數據模板可能是一個簡單的itemscontrol。

編輯:

  <DataGridTemplateColumn Header="Phonenumbers"> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <ItemsControl ItemsSource="{Binding Phonenumbers}"> 
          <ItemsControl.ItemTemplate> 
           <DataTemplate> 
            <StackPanel Orientation="Horizontal"> 
             <TextBlock Text="{Binding AreaCode}" Margin="0,0,5,0"/> 
             <TextBlock Text="{Binding Number}"/> 
            </StackPanel> 
           </DataTemplate> 
          </ItemsControl.ItemTemplate> 
         </ItemsControl> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

PS:如果您發佈的代碼,我將更新的模板;)

+0

,如果你發佈你的客戶Phonenumber來的代碼,我會添加一個例子 – blindmeis 2012-07-09 13:12:22

+0

檢查我的更新原來的職位。正如你可以看到它有2個成員:地區代碼和(訂戶)號碼。 – 2012-07-09 14:25:20

+0

thx for downvote沒有評論的工作示例! @亨利我更新我的代碼到您的要求 – blindmeis 2012-07-10 05:31:22