HTB*_*TBR 2 .net c# wpf datagrid
我有一个想要显示在DataGrid中的Customer对象的列表。我通过后面的代码绑定了列表:
dataGrid.DataContext = customers;
Run Code Online (Sandbox Code Playgroud)
每个客户都有一个或多个电话号码。我想在客户的行/记录中列出它们。我该怎么做呢?我的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>
Run Code Online (Sandbox Code Playgroud)
客户类是:
public class Customer
{
public String LastName { get; set; }
public String FirstName { get; set; }
public List<Phonenumber> PhoneNumbers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
PhoneNumber类为:
public class PhoneNumber
{
public String AreaCode {get;set;}
public String Number {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
首先,请您将itemsource设置给客户,而不是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>
Run Code Online (Sandbox Code Playgroud)
ps:如果您发布代码,我将更新模板;)
| 归档时间: |
|
| 查看次数: |
1560 次 |
| 最近记录: |