C# 绑定Wpf列表

C# 绑定Wpf列表,c#,wpf,data-binding,datagrid,C#,Wpf,Data Binding,Datagrid,我有一些问题要解决这个问题 <DataGrid x:Name="gridMates" ItemsSource="{Binding Groups}"> 所以我想在我的数据网格上显示每个同学的组名和显示名 我看到GroupName正在这样做: <DataGrid x:Name="gridMates" ItemsSource="{Binding Groups}"><DataGrid.Columns> <DataGridTextColumn

我有一些问题要解决这个问题

<DataGrid x:Name="gridMates" ItemsSource="{Binding Groups}">
所以我想在我的数据网格上显示每个同学的组名和显示名

我看到GroupName正在这样做:

<DataGrid x:Name="gridMates"  ItemsSource="{Binding Groups}"><DataGrid.Columns>
        <DataGridTextColumn Header="GroupName" Binding="{Binding Path=GroupName}" />
        <DataGridTextColumn Header="DisplayName" Binding="{Binding Path=CLGroup.DisplayName}" />

但我看不出正确的名字。
有什么问题吗?

CLGroup
是一个可以包含多个项目的列表,不同的项目可以有不同的显示名称。CLGroup列表本身没有DisplayName。例如,要从第一项获取DisplayName,请使用
CLGroup[0]。DisplayName
path

如果需要显示所有项目,请在CellTemplate中使用带有items控件的
DataGridTemplateColumn

两种方法:

<DataGrid.Columns>
    <DataGridTextColumn Header="GroupName" Binding="{Binding Path=GroupName}" />

    <DataGridTextColumn Header="DisplayName" Binding="{Binding Path=CLGroup[0].DisplayName}" />

    <DataGridTemplateColumn Header="DisplayName">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ItemsControl ItemsSource="{Binding Path=CLGroup}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=DisplayName}"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

</DataGrid.Columns>

我想你想要这样的东西

 <DataGrid x:Name="gridMates"  ItemsSource="{Binding Groups}"><DataGrid.Columns>
        <DataGridTextColumn Header="GroupName" Binding="{Binding Path=GroupName}" />
        <DataGridTemplateColumn Header="Class Mates">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                   <DataGrid x:Name="gridClassMates"  ItemsSource="{Binding CLGroup}">
                       <DataGrid.Columns>
                          <DataGridTextColumn Header="DisplayName" Binding="{Binding Path=DisplayName}" />
                       </DataGrid.Columns> 
                   </DataGrid>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
         </DataGridTemplateColumn>


您的“Group”类中是否有“PointsGroup”属性?抱歉,代码错误。赖特now@SimonLP,CLGroup是一个可以有多个项目的列表,不同的项目可以有不同的显示名。CLGroup列表本身没有DisplayName。例如,要从第一项获取DisplayName,请使用
CLGroup[0]。DisplayName
path@ASh很好,但我会把我所有的同学都列在名单上,而不仅仅是第一个
<DataGrid.Columns>
    <DataGridTextColumn Header="GroupName" Binding="{Binding Path=GroupName}" />

    <DataGridTextColumn Header="DisplayName" Binding="{Binding Path=CLGroup[0].DisplayName}" />

    <DataGridTemplateColumn Header="DisplayName">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ItemsControl ItemsSource="{Binding Path=CLGroup}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=DisplayName}"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>

</DataGrid.Columns>
 <DataGrid x:Name="gridMates"  ItemsSource="{Binding Groups}"><DataGrid.Columns>
        <DataGridTextColumn Header="GroupName" Binding="{Binding Path=GroupName}" />
        <DataGridTemplateColumn Header="Class Mates">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                   <DataGrid x:Name="gridClassMates"  ItemsSource="{Binding CLGroup}">
                       <DataGrid.Columns>
                          <DataGridTextColumn Header="DisplayName" Binding="{Binding Path=DisplayName}" />
                       </DataGrid.Columns> 
                   </DataGrid>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
         </DataGridTemplateColumn>