是否可以将包含List <String>的List <Object>绑定到DataGrid

Usu*_*ect 5 c# wpf datagrid

我的问题是如何将List<Object>(包含a List<String>)绑定到WPF中的DataGrid

让我们说班级看起来像这样

Class Student
{
         String Name;
         List<String> Marks;
}
Run Code Online (Sandbox Code Playgroud)

让我说我有,List<Student>但我如何将其绑定到数据源中的数据网格.

我相信这一点,DataGrid.DataSource=List<Student>不会按预期工作.

这就是我想要的

在此输入图像描述

pus*_*raj 5

干得好

    <DataGrid ItemsSource="{Binding Students}"
              AutoGenerateColumns="False"
              CanUserAddRows="False">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Name}"
                                Header="Name" />
            <DataGridTextColumn Binding="{Binding Marks[0]}"
                                Header="Mark1" />
            <DataGridTextColumn Binding="{Binding Marks[1]}"
                                Header="Mark2" />
            <DataGridTextColumn Binding="{Binding Marks[2]}"
                                Header="Mark3" />
        </DataGrid.Columns>
    </DataGrid>
Run Code Online (Sandbox Code Playgroud)

也改为上课

    class Student
    {
        public String Name { get; set; }
        public List<String> Marks { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

注意我为你的变量做了公共属性

结果

样品

变量列

您可以拥有可变数量的列,但不能用于每一行

method1硬编码xaml中的最大列,因此如果列没有该行的值,它将保持为空

例如

网格样本2

我添加了另一个专栏来清楚地展示

<DataGridTextColumn Binding="{Binding Marks[3]}"
                    Header="Mark4" />
Run Code Online (Sandbox Code Playgroud)

其他方法涉及在运行时通过代码隐藏或通过附加属性的帮助生成列