我在 TechNet 看到了这段代码示例女巫展示了如何绑定(bind)单个列标题标题及其对应的列数据:
<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.Header>
<TextBlock Text="{Binding DataContext.HeaderNameText, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" />
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding}" />
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
DataGrid 的 DataContext 设置如下:
Data data = new Data();
data.HeaderNameText = "Header2";
data.Items = new List<string>() { "Item1", "Item2" };
DataContext = data;
数据类结构如下:
public class Data
{
public string HeaderNameText { get; set; }
public List<string> Items { get; set; }
}
我的问题是如何将 DataGrid ItemSource 绑定(bind)到多列数据:
List<Data> data=new List<Data>();
我希望为上面列表中的每个数据元素获得一列,那么如何实现呢?
最佳答案
给定的方法只定义了一列
<DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn ...>
</DataGrid.Columns>
</DataGrid>
对于多个列,您必须多次定义它
<DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn ...>
<DataGridTemplateColumn ...>
<DataGridTemplateColumn ...>
</DataGrid.Columns>
</DataGrid>
如果你这样定义列
public class Data
{
public string[] HeaderNameText { get; set; } // array, list, etc.
public List<string> Items { get; set; }
}
然后绑定(bind)会是这样的
{Binding DataContext.HeaderNameText[0] ...}
{Binding DataContext.HeaderNameText[1] ...}
等等
关于c# - 多个 DataGrid 列标题的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26778441/