2

我有一个要在 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>

客户类是:

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

PhoneNumber 类是:

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

1 回答 1

5

首先请将 itemssource 设置为 customers 而不是 datacontext。现在回答您的问题:您可以使用 DataGridTemplateColumn 并绑定到您的 phonenumbers 集合。此模板列的数据模板可以是一个简单的项目控件。

编辑:

            <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:如果您发布代码,我将更新模板;)

于 2012-07-09T13:08:14.033 回答