我的问题是如何将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>不会按预期工作.
这就是我想要的

干得好
<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中的最大列,因此如果列没有该行的值,它将保持为空
例如

我添加了另一个专栏来清楚地展示
<DataGridTextColumn Binding="{Binding Marks[3]}"
Header="Mark4" />
Run Code Online (Sandbox Code Playgroud)
其他方法涉及在运行时通过代码隐藏或通过附加属性的帮助生成列