gpt4 book ai didi

c# - 如何显示具有多个子 WPF DataGrid 的记录?

转载 作者:行者123 更新时间:2023-12-02 22:36:23 25 4
gpt4 key购买 nike

我有一个要在 DataGrid 中显示的客户对象列表。我通过隐藏代码绑定(bind)了列表:

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;}
}

最佳答案

首先请将项目源设置为客户而不是数据上下文。现在回答您的问题:您可以使用 DataGridTemplateColumn 并绑定(bind)到您的电话号码集合。此模板列的数据模板可以是一个简单的项目控件。

编辑:

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

关于c# - 如何显示具有多个子 WPF DataGrid 的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com