C# 绑定多个DataGrid列标题

C# 绑定多个DataGrid列标题,c#,wpf,xaml,binding,wpfdatagrid,C#,Wpf,Xaml,Binding,Wpfdatagrid,我在witch遇到了这个代码示例,它展示了如何绑定单个列标题及其相应的列数据: <DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTemplateColumn> <DataGridTemplateColumn.Header> &

我在witch遇到了这个代码示例,它展示了如何绑定单个列标题及其相应的列数据:

<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>   
List<Data> data=new List<Data>();

DataGrid的DataContext设置如下:

Data data = new Data();
data.HeaderNameText = "Header2";
data.Items = new List<string>() { "Item1", "Item2" };
DataContext = data;
数据数据=新数据();
data.HeaderNameText=“Header2”;
data.Items=newlist(){“Item1”,“Item2”};
数据上下文=数据;
数据类结构如下所示:

public class Data
{
    public string HeaderNameText { get; set; }
    public List<string> Items { get; set; }
}
公共类数据
{
公共字符串HeaderNameText{get;set;}
公共列表项{get;set;}
}
我的问题是如何将DataGrid ItemSource绑定到多列数据:

<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>   
List<Data> data=new List<Data>();
列表数据=新列表();

我希望上面列表中的每个数据元素都有一列,那么如何实现呢?

给定的方法只定义了一列

<DataGrid>
    <DataGrid.Columns>
        <DataGridTemplateColumn ...>
    </DataGrid.Columns>
</DataGrid>

等等。

列的数量可能会根据数据而变化。Count(),我不想在xaml中静态地定义它们,但我需要定义一个应用于每列的数据模板!那么给定的方法就行不通了。您可以使用
AutoGenerateColumns=true
并提供列模板(我在这里的某个地方见过这种方法),或者动态生成
列。两者都需要一些代码。例如,使用搜索(关键字是动态的
wpf datagrid列
)。如果要使用
数据
对象列表,那么您也会有多个
,这对我来说没有什么意义。有一个单独设置了值和列标题的对象列表不是更明智吗?列的数量是一个变化因素,不能静态设置(标题也可以设置)!您是说同一
itemsource
中不同行的列数不同吗?或者干脆说,
ItemsSource
中的列数事先不知道?如果是前者,则必须在行/记录进入时管理列集。
{Binding DataContext.HeaderNameText[0] ...}
{Binding DataContext.HeaderNameText[1] ...}